我有这个结构:
struct foo {
int a;
union {
struct {
int b;
struct bar
{
int c;
int d;
} *aBar;
} in;
} u;
};
如何在 Visual C++ 中声明 bar 类型的变量?
我有这个结构:
struct foo {
int a;
union {
struct {
int b;
struct bar
{
int c;
int d;
} *aBar;
} in;
} u;
};
如何在 Visual C++ 中声明 bar 类型的变量?
当您声明这样的结构时:
struct
{
int b;
} in;
您实际上是在创建一个具有 name 的对象in
,具有未命名的数据类型。此数据类型将由编译器在内部命名,并取决于编译器。上面给出的样式没有声明in
为类型,而是变量!
如果您想使其成为一种类型,请使用任一给定方法:
// Approach 1
struct in{...};
// Approach 2
typedef struct {..} in; // in is now a type, because of `typedef`
如果您有支持 C++0x 的编译器,并且特别是 typedecltype
关键字,您可以将它用于第一种样式(它in
生成一个变量)。例子:
decltype(in) in_var;
in_var.b = 10;
谢谢Ajay,我这样解决了:
foo *k;
decltype(k->u.in.aBar) j;
j->c = 1;
j->d = 1;