c – 为什么ARM将“0xFFFFFFFF”视为枚举的“int”范围之外,而不
发布时间:2020-12-16 07:23:37 所属栏目:百科 来源:网络整理
导读:我想在C(armcc file.c)中编译以下代码: typedef enum A{ JANUARY,FEBRUARY= 0xFFFFFFFF /* Warning seen on this line */}A;int main(){ int max = 0xFFFFFFFF; /* No warning seen for this line*/ ...} 我只收到枚举赋值的警告,而不是整数变量赋值,但在我
我想在C(armcc file.c)中编译以下代码:
typedef enum A { JANUARY,FEBRUARY= 0xFFFFFFFF /* Warning seen on this line */ }A; int main() { int max = 0xFFFFFFFF; /* No warning seen for this line*/ ... } 我只收到枚举赋值的警告,而不是整数变量赋值,但在我看来,两者都没有警告. 警告如下:
我在这里错过了什么吗? 解决方法
Int赋值生成-1所以它在技术上是合法的. Per Arm spec enum使用最小整数类型实现,因此会产生错误.
枚举 > unsigned char如果不使用–enum_is_int 以这种方式实现枚举可以减少数据大小.命令行选项–enum_is_int强制枚举的基础类型至少与int一样宽. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |