起初我尝试初始化这样的结构:
struct {
char age[2]; // Hold two 1-Byte ages
} studage[] = {
{23, 56},
{44, 26}
};
但是这给了我关于缺少大括号的编译器警告,所以我使用了编译器建议的更多大括号,最后得到了这个:
struct {
char age[2]; // Hold two 1-Byte ages
} studage[] = {
{{23, 56}},
{{44, 26}}
};
没有警告。为什么我需要额外的括号?
答案 0 :(得分:10)
你有一个结构数组,结构有一个成员,它是一个数组。
struct {
char age[2]; // Hold two 1-Byte ages
} studage[] = {
^
This is for the studage array
{ { 23, 56}},
^ ^
| this is for the age array
this is for the anonymous struct
{{44, 26}}
};
也许更容易看出你的结构是否有另一个成员:
struct {
int id;
char age[2];
} studage[] = {
{1, {23, 56}},
^ ^ ^
id | |
age[0] |
age[1]
};