KEIL MDK warning: #1134-D: literal treated as “long long”; 解决办法

最近使用了很多int类型的变量,由于是采集传感器的数据,因此我将无效值定义为:S32_MIN,结果编译器产生了很多警告,warning:  #1134-D: literal treated as "long long",一直在寻找这个解决办法,无意间在网上看到一个解释,意思是说编译器也是人写的程序,他在识别负数字符串的时候,是将后面的数字字符串转换为int类型的正数,然后检查符号,而S32_MIN    =-2147483648,如果先取正数,就是2147483648,这就超过了int类型最大值2147483647,因此会报错,最后的解决办法也很简单,就是将S32_MIN修改一下,变为-2147483647-1就能解决。

#define S32_MIN    ((s32)-2147483647-1)	//可以防止-2147483648 报错

猜你喜欢

转载自blog.csdn.net/cp1300/article/details/79822300