我有一个声明如下的结构:
struct a {
struct b {
int d;
} c;
};
如何在b
之外声明a
的变量?在C ++中,我可以使用a::b x;
。但是,在C中,它需要在struct name之前指定struct
关键字。
答案 0 :(得分:1)
C没有嵌套类型。你不能写a::x b
或任何重新复制它的东西。如果你想摆脱struct
关键字,那就是另一个问题。使用typedef
s。但它不允许嵌套类型。
typedef struct b_t {
int d;
} b;
typedef struct {
b c;
} a;
b some_b;
a some_a;
int f() {
some_b.d=42;
some_a.c=some_b;
return 0;
}
答案 1 :(得分:1)
C布局平坦;当您在另一个结构中声明一个结构时,前者只是被放入全局名称空间。
因此,在您的示例中,它只是struct b
。