我遇到了来自 gcc 4.1.2 的以下警告:
warning: comparison is always false due to limited range of data type
相关的 C 代码如下:
if ( unlikely(count < 0) ) BUG();
其中“计数”是无符号的。
我试图禁用警告,因为不允许修改源代码:
-Wno-type-limits
但是gcc 4.1.2好像不支持。
cc1: error: unrecognized command line option "-Wno-type-limits"
还有其他方法可以消除此警告吗?
最佳答案
安unsigned
value 永远不会是负的——因此警告。与其说是“不可能”,不如说是“不可能”。
这通常表示某种代码中存在错误;编写代码时期望的类型可以允许负值,但该类型不允许负值。因此,由于预期不匹配,代码很可能会出现错误。
请注意,在某些机器上,普通 char
是有符号的,其他的是无符号的(它是一种不同于 signed char
和 unsigned char
的类型,尽管它的值范围与一个或另一个重叠)。
关于c - 警告 : comparison is always false due to limited range of data type in gcc 4. 1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15398947/