Se si utilizza un elenco initialiser convenzionale, i valori per gli elementi vengono assegnati in ordine, quindi se avete questa struct:
typedef struct _foo {
int a;
int b;
} foo_t;
allora questo initialiser assegna esplicitamente a
e non b
:
foo_t value = { 7 };
senza inizializzatori designati, gli unici elementi che possono essere omessi sono quelli dichiarati alla fine
usi ng inizializzatori designati, è possibile omettere gli elementi che vengono dichiarati ovunque:
foo_t value = { .b = 8 };
in modo che l'initialiser per value.a
viene omesso, nonostante sia il primo valore nella struct.
fonte
2009-04-18 17:06:26