这很奇怪。我没有读过在C中允许的另一个结构定义中定义结构的任何地方。但是这个链接说明了它的允许。
http://www.c4learn.com/structure-within-structure-nested.html
这是真的吗?
答案 0 :(得分:2)
是的,您可以声明嵌套结构。这是语法:
C11(n1570),§6.7.2.1结构和联合说明符
struct-or-union-specifier: struct-or-union identifier (opt) { struct-declaration-list } struct-or-union identifier struct-declaration-list: struct-declaration struct-declaration-list struct-declaration
答案 1 :(得分:2)
启!我们必须更深入!!
struct EvenDeeper {
int a, b, c;
struct {
char a;
} u;
};
struct Inner {
struct EvenDeeper e;
};
struct Outer {
struct Inner i;
};
int main(int argc, char *argv[]) {
struct Outer o;
o.i.e.a = 5;
o.i.e.b = 4;
o.i.e.c = 3;
o.i.e.u.a = '?';
printf("%d:%d:%d:%c", o.i.e.a, o.i.e.b, o.i.e.c, o.i.e.u.a);
return 0;
}
使用输出正确编译“gcc -std = c89”:
中定义的结构结构5:4:3:
答案 2 :(得分:1)
是的,您可以在另一个结构中声明一个结构。
我看到的两个缺点是:
1.可读性:它可能使您的代码很难让其他人阅读,特别是如果它在团队项目中。
2.内部结构的范围仅限于外部结构,更不用说(取决于它的定义),它只能使用一次,重复使用相同的结构将需要再次重新定义它。
希望这会有所帮助。