我遇到了来自gcc 4.1.2的以下警告:
warning: comparison is always false due to limited range of data type
相关的C代码如下所示:
if ( unlikely(count < 0) ) BUG();
其中'count‘是无符号的。
我尝试禁用该警告,因为我不允许修改源代码:
-Wno-type-limits
但似乎gcc 4.1.2并不支持它。
cc1: error: unrecognized command line option "-Wno-type-limits"
有没有其他方法可以消除这个警告?
发布于 2013-03-14 08:21:46
unsigned
值永远不会为负-因此会出现警告。与其说是“不可能”,不如说是“不可能”。
这通常表示代码中存在某种错误;编写代码时要求类型允许负值,但该类型不允许负值。因此,由于期望的不匹配,代码很可能会出现错误行为。
请注意,在一些机器上,普通char
是有符号的,而在另一些机器上是无符号的(而且它是一种既不同于signed char
又不同于unsigned char
的类型,尽管它的值范围与这两者重叠)。
发布于 2014-10-10 15:32:27
修复此警告的选项:
始终为真的true
发布于 2013-03-14 12:08:08
根据源代码的年龄,它可能会在编译器不像现在的gcc那样类型安全的时候以防御性的方式编写。
该警告看起来像是-Wextra (又称-W)警告选项集的一部分,所以如果您需要额外的警告,这将是其中之一。我个人使用的是-Wall,信不信由你,它不包括“额外”的东西。你可能认为"all“包括"extra”,但我猜不是...
https://stackoverflow.com/questions/15398947
复制相似问题