gpt4 book ai didi

c - C union 的命名标准

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:40 25 4
gpt4 key购买 nike

有时我会使用 union 来以不同方式访问相同类型的数据。例如这个联盟:

typedef union {
int64 word;
int32 array[2];
struct {
field4:16;
field3:16;
field2:28;
field1:4;
} bit;
} my_type;

这个解决方案是否公认正确,我使用的名称(字、数组、位)是否有任何标准?

这个解决方案的缺点是我得到的繁琐的符号:

   my_type data;
data.bit.field1 = 0xA;
for(i=0;i<sizeof(my_t);i++)
data.array[i]++;

最佳答案

一些编译器允许省略 union 中的结构名称。您可以尝试这样定义您的类型:

typedef union {
int64 word;
int32 array[2];
struct {
field4:16;
field3:16;
field2:28;
field1:4;
} bit;
} my_type;

这允许更容易地访问位成员:

my_type data;
data.field1 = 0xA;

但不幸的是,这取决于编译器和编译器选项。 编辑: C11 标准 draft将其描述为匿名结构。

关于c - C union 的命名标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26780258/

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