ほぼ1時間のデバッグの後、最終的に1つのreturn文の後にセミコロンがないことがわかりました。ここに簡略化したバージョン到達不能なコードですが、警告がありません
void PrintNumber(int value) {
cout << value << endl;
}
void BuggyFunction(int value)
{
if (value == 0)
return
PrintNumber(value);
}
ええと、PrintNumberは決して呼び出されません。しかしコンパイラ(VS 2015)は静かでした。この行動の理由はありますか?
値がゼロの場合、PrintNumberが呼び出されます。私は視覚スタジオは現在の方法だけを分析すると思う、あなたはこれを把握するために全体的なプログラム分析を必要とするだろう – tobspr
良い論理的なバグ(しかし、有効なコード) –
すべてのif文で大括弧を使うと、 。 –