Inicialización de la estructura C usando etiquetas. Funciona, pero ¿cómo?

Inicialización de la estructura C usando etiquetas. Funciona, pero ¿cómo?


Encontré un código de inicialización de estructura ayer que me lanzó a un bucle. He aquí un ejemplo:


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 (para mí), aquí está el resultado:


-> testFunc
test.first=1 test.second=2

Como puede ver, la estructura se inicializa correctamente. No sabía que las declaraciones etiquetadas podrían usarse así. He visto varias otras formas de realizar la inicialización de estructuras, pero no encontré ningún ejemplo de este tipo de inicialización de estructuras en ninguna de las preguntas frecuentes de C en línea. ¿Alguien sabe cómo/por qué funciona esto?


Respuestas:


Aquí está la sección del manual de gcc que explica la sintaxis de los inicializadores designados para estructuras y matrices:



La página correspondiente se puede encontrar aquí.


Su compilador debe tener una documentación similar.