C struct inicialización utilizando etiquetas. Funciona, pero ¿cómo?

Encontré un código de inicialización de estructura ayer que me lanzó para un bucle. Aquí hay 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á la salida:

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

Como puede ver, la estructura se inicializa correctamente. No sabía que las declaraciones etiquetadas pudieran usarse de esa manera. He visto varias otras formas 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 de C en línea. ¿Alguien sabe cómo y por qué funciona esto?

Respuestas a la pregunta(5)

Su respuesta a la pregunta