如何声明在另一个struct中声明的struct变量?

时间:2014-06-27 05:08:55

标签: c

我有一个声明如下的结构:

struct a {
    struct b {
        int d;
    } c;
};

如何在b之外声明a的变量?在C ++中,我可以使用a::b x;。但是,在C中,它需要在struct name之前指定struct关键字。

2 个答案:

答案 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