提问人:Michael Mahn 提问时间:5/17/2021 最后编辑:Aykhan HagverdiliMichael Mahn 更新时间:5/17/2021 访问量:276
-wstrict-overflow 不会在明显应该产生任何警告的地方
-Wstrict-overflow doesn't produce any warnings where it clearly should
问:
根据 g++ 手册页及其网站 https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html,以下代码在使用 -O3 -Wstrict-overflow=5 编译时应产生警告:
#include <iostream>
#include <limits>
int
main() {
int x{std::numeric_limits<int>::max()};
if(x+1 > x) std::cout << "Hello";
}
https://godbolt.org/z/57ccc33f3
它甚至输出“Hello”,表明它优化了检查(x+1 > x)。但是,我没有得到任何警告。是我误解了这个警告的意思,还是这是一个gcc错误?我在他们的错误数据库中找不到任何东西。
答:
评论