Ho trovato qualche codice di inizializzazione della struttura ieri che mi ha lanciato per un ciclo. Ecco un esempio:Inizializzazione della struct C mediante etichette. Funziona, ma come?
typedef struct { int first; int second; } TEST_STRUCT;
void testFunc() {
TEST_STRUCT test = {
second: 2,
first: 1
};
printf("test.first=%d test.second=%d\n", test.first, test.second);
}
Sorprendentemente (per me), ecco l'output:
-> testFunc
test.first=1 test.second=2
Come si può vedere, la struct viene inizializzato correttamente. Non ero consapevole che le dichiarazioni etichettate potessero essere usate in quel modo. Ho visto molti altri modi di fare l'inizializzazione della struct, ma non ho trovato alcun esempio di questo tipo di inizializzazione della struct su nessuna delle domande frequenti online di C. Qualcuno è a conoscenza di come/perché funziona?
eccellente, che la documentazione spiega chiaramente la sintassi: Un'altra sintassi che ha lo stesso significato, obsoleto dal GCC 2.5, è 'nomecampo:', come illustrato di seguito: struct punto p = {y: yvalue, x: xvalue}; –
@AndrewCottrell, questa sintassi "fieldname:" sembra così naturale (e preferibile) per me, qualsiasi idea sul perché dovrebbe essere considerata obsoleta? – rick
@rick la sintassi "fieldname:" è un'estensione gcc e non ha mai fatto parte di alcuno standard ISO C. – sigjuice