Neo*_*hus 3 c++ if-statement g++
如果我在c ++中使用if =而不是==if条件,有没有办法让g ++产生编译错误?我已经做了几次这个错字,跟踪是很烦人的.那是:
if (x=5){ //bad - sets x equal to 5
//do something
}
Run Code Online (Sandbox Code Playgroud)
-Wparentheses选项专门警告这种情况,这也是-Wall选项的一部分.
来自gcc文档:
-Wparentheses
如果在某些上下文中省略括号,则会发出警告,例如在预期真值的上下文中存在赋值,或者当嵌套运算符时,优先级通常会让人感到困惑.
...
如果存在这种混淆的可能性,GCC将在指定此标志时发出警告.要消除警告,请在最里面的if语句周围添加显式括号,这样else就不会属于封闭if.
通过指定可以转换为错误-Werror=parentheses.
注意
if(x=5) {...}
Run Code Online (Sandbox Code Playgroud)
是合法的,标准不需要这样的诊断.但是允许实现提供任何数量的此类有用警告.