【发布时间】:2016-04-08 11:01:14
【问题描述】:
我很难在我的代码中找到由这样的循环引起的错误:
for (int i=i;i<5;i++){
// ...
}
我使用带有-O2 -Wall 的g++ 4.7.2,但没有显示警告/错误。是否有一些编译器标志也与-O2 结合为这种情况创建警告?
我发现了几个相关的问题:
here 在讨论的 cmets 中,当没有 -O2 时,g++ 会显示带有 -Wall 的警告。但是,这个问题很特殊,因为有问题的循环已经用-O2 进行了优化,这可以解释没有显示警告。在我的情况下,循环没有被优化掉,但我仍然没有收到任何警告。
同样相关的是this question 和this one。在阅读了这些问题之后,我明白了为什么 c++ 允许这样的废话(我喜欢示例 here,因为它根本不是废话),但我仍在寻找一个编译器标志,它也会用-O2 创建一个警告。
【问题讨论】:
-
赞成的问题,因为它让我意识到我的 gcc 也有同样的问题,我应该使用更新的问题。
标签: c++ compiler-warnings