Ayer encontré un código de inicialización de estructuras que me lanzó a un bucle. He aquí un ejemplo:C struct initialization using labels. Funciona, pero ¿cómo?
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);
}
sorprendente (para mí), aquí está la salida:
-> testFunc
test.first=1 test.second=2
Como se puede ver, la estructura se ha inicializado correctamente. No sabía que las declaraciones etiquetadas pudieran usarse así. He visto varias otras maneras de hacer 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 en línea de C. ¿Alguien sabe cómo/por qué esto funciona?
excelente, que la documentación que explica claramente la sintaxis: Otra sintaxis que tiene el mismo significado, obsoleto desde GCC 2.5, es 'nombre de campo:', como se muestra aquí: struct punto p = {y: yvalue, x: xvalue}; –
@AndrewCottrell, esta sintaxis de "nombre de campo:" parece tan natural (y preferible) para mí, ¿alguna idea de por qué debería considerarse obsoleta? – rick
@rick la sintaxis "fieldname:" es una extensión gcc y nunca ha sido parte de ningún estándar ISO C. – sigjuice