Visual c++ 结构->;联合结构

Visual c++ 结构->;联合结构,visual-c++,struct,unions,Visual C++,Struct,Unions,我有这个结构: struct foo { int a; union { struct { int b; struct bar { int c; int d; } *aBar; } in; } u; }; 我如何声明一个类型的变量,在VisualC++中?< /p> 当你声明这样的结构: struct { int b;

我有这个结构:

struct foo {
   int a;
   union {
      struct {
         int b;
         struct bar
         {
            int c;
            int d;
         } *aBar;
      } in;
   } u;
};

<>我如何声明一个类型的变量,在VisualC++中?< /p> 当你声明这样的结构:

struct 
{ 
    int b;  
} in;
实际上,您正在创建一个名为的对象,该对象的数据类型未命名。此数据类型将由编译器内部命名,并取决于编译器。上面给出的样式并没有将中的
声明为一个类型,而是一个变量

如果要使其成为一种类型,请使用以下任一方法:

// Approach 1
struct in{...};

// Approach 2
typedef struct {..} in; // in is now a type, because of `typedef`
如果您有支持C++0x的编译器,特别是键入
decltype
关键字,则可以对第一种样式使用它(这使
in
成为变量)。例如:

decltype(in) in_var;
in_var.b = 10;

谢谢Ajay,我就是这样解决的:

foo *k;
decltype(k->u.in.aBar) j;
j->c = 1;
j->d = 1;

为什么会有工会?或者你打算以后扩展它?这是第三方代码,我不这么认为