枚举变量
- C 标准实现中没有规定枚举变量占用的字节数
导致的问题:
- 不同平台枚举变量所占用的字节数不一样(STM32等平台中只占1个字节、ARM-Linux平台占用4个字节);
- 同一个结构体(包含枚举变量)在不同平台所占用的字节数不一样。
解决方法:
- 编译平台层:通过 IDE 指定枚举变量所占用的字节数(kill软件可进行配置),通过配置编译器使得平台间保持一致;
- 编码层:枚举变量定义自定义4字节的枚举值,编译器能够自动扩充,使得该枚举变量占用4个字节
typedef enum {
ENUM_VALUE_0 = 0,
ENUM_VALUE_1,
...
ENUM_VALUE_CONST = 10240000,///<The value should bigger than 65536.
} EXAMPLE_DEF_E;
默认枚举变量只占1个字节的平台上,查询以上枚举变量 demo 定义 ‘EXAMPLE_DEF_E’ 占用字节大小为 4 个字节。