编码 | 枚举变量使用技巧

枚举变量

  • 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 个字节。

原文地址:https://www.cnblogs.com/CristL/p/14274385.html