假设我有以下结构体:
typedef struct my_struct{
unsigned long a;
unsigned long b;
char* c;
unsigned int d1 :1;
unsigned int d2 :4;
unsigned int d3 :4;
unsigned int d4 :23;
} my_type, *p_type;
字段d3
当前是由从0x00
到0x0D
的#define
定义的。
实际上,d3
是一个枚举类型。因此,很容易就想着去替换这些#define
为枚举值,但这可能会使得二进制兼容性受到影响。
unsigned int d3 :4;
由
my_enum d3 :4;
这样做安全/被允许吗?
代码必须与多种编译器(GCC、Visual Studio、嵌入式设备)、平台(Win32、Linux、嵌入式设备)和配置(编译为C、编译为C++)一起编译。
- 显然,我可以保留
d3
的定义,并在我的代码中使用枚举类型,将其分配给d3
等等,但这种方法无法在C ++中工作。