Inizializzazione della struct C mediante etichette. Funziona, ma come?

Ieri ho trovato qualche codice di inizializzazione della struct che mi ha lanciato per un loop. Ecco un esempio:

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 puoi vedere, la struttura viene inizializzata 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?