c – 你可以使用一个无名结构或联合?
发布时间:2020-12-16 05:48:26 所属栏目:百科 来源:网络整理
导读:我可以看看怎么样 union {uint32_t ip_address struct { uint8_t oct1; uint8_t oct2; uint8_t oct3; uint8_t oct4; };}; 可能对某人有某种用处,但在这里的结构示例中是struct: Detail of MS warning C4201似乎有点奇怪.任何人都可以表现出良好的用例 解决
我可以看看怎么样
union { uint32_t ip_address struct { uint8_t oct1; uint8_t oct2; uint8_t oct3; uint8_t oct4; }; }; 可能对某人有某种用处,但在这里的结构示例中是struct: 解决方法
一个结构中的一个无名的联合是有意义的,因为它允许你引用联盟的成员,而不指定它的名称,因此更短的代码:
struct { int a; union { int b,c,d; }; } foo; 所以访问联盟的成员就像访问包含struct foo.a和foo.b的成员一样.否则,您必须使用foo.union_name.b访问联合成员. 当然,使用这样一个结构体的“用户”程序员应该知道设置foo.c会影响foo.b和foo.d的值. 由于相同的原因,可以做到这一点,即将一个匿名结构放在一个联合中: union { struct { int a,b; }; int c; } foo; 这样,foo.a和foo.b可以同时使用,而foo.c可以在另一种情况下使用. 我不能想到匿名结构或工会的任何其他用途. “声明”一个匿名结构/联合是一个矛盾,就像说int;而不是int a. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |