警告:由于gcc 4.1.2中数据类型的范围有限,因此比较始终为false

use*_*732 4 c linux gcc

我从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)

还有其他方法可以摆脱这种警告吗?

Jon*_*ler 8

一个unsigned值永远不会为负-因此警告.它不像"不可能"那样"不太可能".

这通常表明某种代码中存在错误; 编写的代码期望一个可以允许负值的类型,但该类型不允许负值.因此,由于期望不匹配,代码很可能会出错.

请注意,在某些计算机上,plain char是有符号的,而其他机器是无符号的(并且它是一种与两者不同的类型signed char,unsigned char即使它的值范围与其中一个重叠).