c - 警告 : comparison is always false due to limited range of data type in gcc 4. 1.2

标签 c linux gcc

我遇到了来自 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 charunsigned 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/

相关文章:

php - nginx-php 不适用于自己构建的 nginx

linux - 未设置源目录 (-s)

c++ - 停止 dll 内操作的安全方法

c - 为什么编程语言需要关键字?

c++ - 将整数存储为 float

linux - 每个程序使用字体

c - 如何验证函数 X() 是从函数 Y() 而不是从函数 Z() 调用的?

c - getsockopt() 中的 optlen 参数

c - 从结构体中的数组中减去

c - 在 Ubuntu 上编译 C 时没有输入文件或 undefined reference