我明白了
union {
uint32_t ip_address
struct {
uint8_t oct1;
uint8_t oct2;
uint8_t oct3;
uint8_t oct4;
};
};
可能对某些人有用,但这里是结构示例中的结构: Detail of MS warning C4201似乎有点奇怪。谁能展示一个好的用例?
最佳答案
struct
中的无名 union
是有意义的,因为它允许您在不指定其名称的情况下引用 union 的成员,因此代码更短:
struct {
int a;
union {
int b, c, d;
};
} foo;
因此访问 union
的成员就像访问包含结构的成员:foo.a
和 foo.b
。否则,您必须使用 foo.union_name.b
来访问 union 成员。
当然,使用这种结构的“用户”程序员应该知道设置 foo.c
会影响 foo.b
和 foo.d 的值
。
出于同样的原因,可以进行相反的操作,即将匿名 struct
放入 union
中:
union {
struct {
int a, b;
};
int c;
} foo;
这样foo.a
和foo.b
可以同时使用,foo.c
可以在另一种情况下使用。
我想不出匿名结构或 union 的任何其他用途。 “声明”匿名结构/union 是一种矛盾修饰法,就像说 int;
而不是 int a;
。
关于c++ - 您可能会使用无名结构或 union 来做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4626597/