我花了一些时间调试一些代码,问题的根本原因是打字错误,使代码将一个变量与自身而不是另一个变量进行比较。
启用-Wall
和-Wextra
似乎不会发出任何有关变量与其自身比较的警告。
#include <iostream>
int main(){
int ia = 123;
if(ia != ia){
std::cout << " != " << std::endl;
}
}
即使使用-Wall
和-Wextra
,以上代码也不会发出警告。
当变量与自身进行比较时,有没有办法使g ++生成警告消息?
答案 0 :(得分:1)
您需要使用更新的GCC版本。 GCC 8张照片:
t.cc: In function ‘int main()’:
t.cc:5:9: warning: self-comparison always evaluates to false [-Wtautological-compare]
if(ia != ia){
~~~^~~~~
这是针对GCC PR 66555实现的。 GCC 6是第一个出现此警告的GCC版本。