DJM*_*hem 5 c++ xcode dead-code compiler-warnings
我正在编写一个程序来解决类似sudoko的难题Hashiwokakero。我有一些看起来像这样的代码:
if (bridgesLeft[row][col] == 1)
{
doSomething();
}
else if (bridgesLeft[row][col] == 2)
{
doSomethingElse();
}
else if (bridgesLeft[row][col] == 3)
{
doAnotherThing();
}
...
Run Code Online (Sandbox Code Playgroud)
我意识到我在doSomethingElse()函数中放了一个错误,因此我没有删除该块,而是添加else if (bridgesLeft[row][col] == 2 && false)了保证该错误功能不会运行的信息,只是要确保那是我的错误来源。Xcode给我警告,说我的doSomethingElse()代码永远不会运行。它还给了我这个选择:
fix-it: Silence by adding parentheses to mark code as explicitly dead.
Run Code Online (Sandbox Code Playgroud)
单击此按钮会更改
else if (bridgesLeft[row][col] == 2 && false)
Run Code Online (Sandbox Code Playgroud)
至
else if (bridgesLeft[row][col] == /* DISABLES CODE */ (2) && false)
Run Code Online (Sandbox Code Playgroud)
如何将括号内的“ 2”标记为明显已死?这是什么意思?如果我保留括号,但取出&& false一部分,代码块仍会执行,因此实际上并没有使代码失效。
这不能解决问题,而不能通过告诉clang代码已死定来使警告安静下来,我们可以通过阅读Modify -Wunreachable-code来了解这一点,以提供一种手段来指示通过if(( 0)),其中说:
Log:改进-Wunreachable-code,以提供一种手段来指示通过if((0))故意将代码标记为无效。
从-Wparentheses那里得到一个提示,使用一个额外的'()'作为警告,表示有条件的死亡是故意死亡的。例如:
Run Code Online (Sandbox Code Playgroud)if ((0)) { dead }找到此标志后,请勿发出无效代码警告。当分析看到:
Run Code Online (Sandbox Code Playgroud)if (0)它建议插入'()'作为Fix-It。
从我可以告诉它只是寻找一个整数文字中(),这在你的情况(2)符合这一情况和沉默的警告。