C inicjalizacja struktury za pomocą etykiet. To działa, ale jak?

Znalazłem wczoraj jakiś kod inicjujący struct, który rzucił mnie na pętlę. Oto przykład:

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);
}

Zaskakujące (dla mnie), oto wyjście:

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

Jak widać, struktura jest poprawnie inicjowana. Nie wiedziałem, że takie stwierdzenia mogą być używane w ten sposób. Widziałem kilka innych sposobów inicjowania struktury, ale nie znalazłem żadnych przykładów tego rodzaju inicjalizacji struktury w żadnym z najczęściej zadawanych pytań C w Internecie. Czy ktoś wie, jak to działa?

questionAnswers(5)

yourAnswerToTheQuestion