【发布时间】:2021-03-25 12:54:46
【问题描述】:
这段代码:
#include <stdio.h>
struct
{
int i;
const char* str;
} ar[] = {
1,"asd", //should be {1, "asd"},
2, "qwe", //should be {2, "qwe"},
3, "poi" //should be {3,"poi"}
};
int main()
{
printf("%s\n", ar[2].str);
}
工作得很好,即使数组ar 的每个元素都应该用大括号括起来(至少我希望如此)。为什么会这样?
【问题讨论】:
-
向后兼容。因为准标准 C 就是这样做的,而标准 C 必须尽可能使用准标准源代码。
-
从来不知道。很棒的发现。
标签: c curly-braces list-initialization