我从gcc 4.1.2遇到以下警告:
warning: comparison is always false due to limited range of data type
Run Code Online (Sandbox Code Playgroud)
有关的C代码如下:
if ( unlikely(count < 0) ) BUG();
Run Code Online (Sandbox Code Playgroud)
其中'count'是无符号的.
我试图禁用警告,因为我不允许修改源代码:
-Wno-type-limits
Run Code Online (Sandbox Code Playgroud)
但似乎gcc 4.1.2不支持它.
cc1: error: unrecognized command line option "-Wno-type-limits"
Run Code Online (Sandbox Code Playgroud)
还有其他方法可以摆脱这种警告吗?
一个unsigned值永远不会为负-因此警告.它不像"不可能"那样"不太可能".
这通常表明某种代码中存在错误; 编写的代码期望一个可以允许负值的类型,但该类型不允许负值.因此,由于期望不匹配,代码很可能会出错.
请注意,在某些计算机上,plain char是有符号的,而其他机器是无符号的(并且它是一种与两者不同的类型signed char,unsigned char即使它的值范围与其中一个重叠).