gpt4 book ai didi

c++ - 您可能会使用无名结构或 union 来做什么?

转载 作者:可可西里 更新时间:2023-11-01 15:05:06 25 4
gpt4 key购买 nike

我明白了

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.afoo.b。否则,您必须使用 foo.union_name.b 来访问 union 成员。

当然,使用这种结构的“用户”程序员应该知道设置 foo.c 会影响 foo.bfoo.d 的值

出于同样的原因,可以进行相反的操作,即将匿名 struct 放入 union 中:

union {
struct {
int a, b;
};

int c;
} foo;

这样foo.afoo.b可以同时使用,foo.c可以在另一种情况下使用。

我想不出匿名结构或 union 的任何其他用途。 “声明”匿名结构/union 是一种矛盾修饰法,就像说 int; 而不是 int a;

关于c++ - 您可能会使用无名结构或 union 来做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4626597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com