【发布时间】:2015-01-19 14:23:21
【问题描述】:
我有以下几点:
typedef enum {
green = 0;
orange = 1;
red = 2;
} color;
typedef enum {
proceed = 0;
prepare = 1;
stop = 2;
} state;
typedef union {
color a;
state b;
uint8_t reserved;
} status;
typedef struct {
u32 m : 8;
u32 n : 8;
status var : 8;
u32 res : 8;
} info;
我在定义结构变量时看到编译错误:
错误:位域“var”的类型无效。
我想将结构打包在 4 个字节内,并将枚举的并集作为位字段。这可能吗?
【问题讨论】:
-
位域必须是整数类型(不是联合)
-
你在用
struct var : 8;做什么? -
好的,所以你是说我每次想引用它的成员时都使用“u32 var : 8”并将它的类型转换为枚举?这是唯一的方法吗?
标签: c unions bit-fields