C struct инициализация с использованием меток. Это работает, но как?
Вчера я нашел некоторый код инициализации структуры, который бросил меня в цикл. Вот пример:
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);
}
Удивительно (для меня), вот вывод:
-> testFunc
test.first=1 test.second=2
Как видите, структура инициализируется правильно. Я не знал, что помеченные заявления могут быть использованы таким образом. Я видел несколько других способов инициализации структуры, но я не нашел ни одного примера такого рода инициализации структуры ни в одном из часто задаваемых вопросов по Си. Кто-нибудь знает, как / почему это работает?