217
3063
9336
技术达人
在编写测试程序的过程中,有如下定义:
#define UART1_EN (1<<31)
编译后编译器报错:
integer operation result is out of range (61-D),经查资料是由于溢出所致,宏定义默认常量是有符号型,当左移31位时,常数就变成负数,编译器就会给出如上的警告信息解决办法是强制类型转换成无符号类型:
#define UART1_EN ((U32)1<<31)
这样,警告信息就消除了。
使用特权
249
5397
1万
资深工程师
213
3805
113
1493
4489
中级工程师
201
3315
139
1486
4485
196
3127
9440
发表回复 本版积分规则 回帖后跳转到最后一页
人才类勋章
发帖类勋章
等级类勋章
时间类勋章
12
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号