如果我按如下方式声明枚举:
typedef enum A
{
a = 0x00000001,
b = 0x00000002
} AObj;
现在,如果我按如下方式声明一个AObj变量,这是什么意思?
AObj myAObj : 2;
答案 0 :(得分:4)
这是一种指定使用位数的方法。 那是2意味着2位。
另请注意,这仅在与同一结构中的其他位字段一起使用时才有用,因为对齐和填充将导致跳过内存。
答案 1 :(得分:4)
您可能正在谈论“bit fields”,它使您能够创建一个结构,您可以在其中处理各个位。但是(除非我弄错了!)你的语法都错了:你的枚举中缺少逗号和等号:
typedef enum A
{
a = 0x00000001,
b = 0x00000002
} AObj;
更重要的是,位域是在struct
s内声明的,所以你要做的事情并不完全清楚。
(或者使用冒号一些其他语法我不知道???)