作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
根据这篇 SO 帖子:
What is the size of an enum in 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
值?
最佳答案
According to this SO post: What is the size of an enum in C? enum types have signed int type.
事情是 enum
类型 可以 是 int
类型,但它们不是 C 中的 int
。在 gcc
1),enum
类型默认为unsigned int
。
enum
常量是 int
但 enum
类型是实现定义的。
在您的例子中,enum
常量是 int
,但您给它的值不适合 int
。您不能在 C 中使用 unsigned int
enum
常量,因为 C 表示它们是 int
。
关于将枚举定义转换为无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11314545/
我是一名优秀的程序员,十分优秀!