warning: #61-D: integer operation result is out of range

2023-11-04

STM32程序编译出现以下问题的解决方法:
//IO方向设置 

#define SDA_IN()  {GPIOC->CRH&=0X0FFFFFFF;GPIOC->CRH|=8<<28;} 
#define SDA_OUT() {GPIOC->CRH&=0X0FFFFFFF;GPIOC->CRH|=3<<28;} 
结果编译时出现错误 
compiling myiic.c... 
..\HARDWARE\IIC\myiic.c(57): warning:  #61-D: integer operation result is out of range 
..\HARDWARE\IIC\myiic.c(57): warning:  #68-D: integer conversion resulted in a change of sign 
..\HARDWARE\IIC\myiic.c(122): warning:  #61-D: integer operation result is out of range 
..\HARDWARE\IIC\myiic.c(122): warning:  #68-D: integer conversion resulted in a change of sign 
内容网上查好像是说 
编译器默认signed int即32位有符号整数类型,而1<<31实际为0x80000000,这样就有可能改写了符号位(最高位) 
答:
加个(u32)在8<<28; 
前面就可以了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

warning: #61-D: integer operation result is out of range 的相关文章

随机推荐