Xcode offers strange solution for explicitly dead code in c++? -
i'm writing program supposed solve sudoko-like puzzle, hashiwokakero. have code looks this:
if (bridgesleft[row][col] == 1) { dosomething(); } else if (bridgesleft[row][col] == 2) { dosomethingelse(); } else if (bridgesleft[row][col] == 3) { doanotherthing(); } ... i realized put bug in dosomethingelse() function, rather deleting block, added else if (bridgesleft[row][col] == 2 && false) guarantee buggy function wouldn't run, make sure bug coming from. xcode gave me warning, saying dosomethingelse() code never run. gave me option:
fix-it: silence adding parentheses mark code explicitly dead. clicking on button changes
else if (bridgesleft[row][col] == 2 && false) to
else if (bridgesleft[row][col] == /* disables code */ (2) && false) how parentheses around '2' mark code explicitly dead? mean? if leave parentheses in, take && false part out, code block still executed, it's not making code dead.
this not fix problem as silence warning telling clang code meant dead, can see reading improve -wunreachable-code provide means indicate code intentionally marked dead via if((0)) says:
log: improve -wunreachable-code provide means indicate code intentionally marked dead via if((0)).
taking hint -wparentheses, use '()' sigil dead condition intentionally dead. example:
if ((0)) { dead }when sigil found, not emit dead code warning. when analysis sees:
if (0)it suggests inserting '()' fix-it.
from can tell looking integer literal in (), in case (2) fits case , silences warning.
Comments
Post a Comment