根据这篇SO帖子:
C语言中枚举类型的大小是多少?
枚举类型具有
C语言中枚举类型的大小是多少?
枚举类型具有
signed int
类型。我想将一个枚举定义从signed int
转换为unsigned int
。
例如,在我的平台上,unsigned int
的宽度为32位。我想创建一个枚举:typedef enum hardware_register_e
{
REGISTER_STATUS_BIT = (1U << 31U)
} My_Register_Bits_t;
我的编译器提示上述定义超出范围(对于signed int
而言确实如此)。
如何声明unsigned int
的enum
值?
编辑1:
- 优先选择不扩展到64位(因为代码驻留在嵌入式系统中)。
- 由于技能限制,本项目不允许使用C++。:(
编辑2:
- 编译器是IAR Embedded Workbench for ARM7。
int
是 64 位的系统将在我们遇到补码机之前达到 -2147483648 的破坏点。 - Daniel Fischer