根据这篇 SO 帖子:
C 中枚举的大小是多少?
枚举类型有signed int
类型。
我想将枚举定义从 转换signed int
为unsigned int
。
例如,在我的平台上,anunsigned int
是 32 位宽的。我想创建一个枚举:
typedef enum hardware_register_e
{
REGISTER_STATUS_BIT = (1U << 31U)
} My_Register_Bits_t;
我的编译器抱怨上面的定义超出了范围(它适用于 a signed int
)。
如何声明unsigned int
enum
值?
编辑1:
- 首选不扩展到 64 位(因为代码驻留在嵌入式系统中)。
- 由于技能限制,此项目不允许使用 C++。:-(
编辑2:
- 编译器是用于 ARM7 的 IAR Embedded Workbench。