Ich habe eine Struktur, die eine Arrays einer anderen Struktur enthält, sieht es so etwas wie dieses:Verschachtelte Strukturen/Arrays Initialisierung
typedef struct bla Bla;
typedef struct point Point;
struct point
{
int x, y;
};
struct bla
{
int another_var;
Point *foo;
};
Ich möchte sie jetzt im globalen Bereich initialisieren. Sie sind als Beschreibung eines Moduls gedacht. Ich habe versucht, dass Literale mit c99-Verbindung zu tun, aber der Compiler (gcc) hat es nicht mag:
Bla test =
{
0, (Point[]) {(Point){1, 2}, (Point){3, 4}}
};
ich folgende Fehler:
error: initializer element is not constant error: (near initialization for 'test')
Da brauche ich nicht zu ändern es kann ich so viele "const" darin wie nötig setzen. Gibt es eine Möglichkeit, es zu kompilieren?
Ordnet das dynamisch den Speicher für die zwei "Punkte" zu? – aib
@aib: Ja, es erstellt ein Array von zwei literalen "Punkt" -Strukturen (mit statischer Speicherdauer, da es sich im Dateibereich befindet) und initialisiert das "foo" -Member von "test", um auf sie zu zeigen. Es ist eine Abkürzung, die dem Definieren eines Arrays separat und dem Zuweisen des "foo" -Members entspricht, um auf es zu verweisen. –