奇妙なコードに遭遇しました。実用的なアプリケーションがあるのか、それとも単調な奇妙なのか疑問に思いました。c/C++そうでない場合にelseを使用する
コードは、基本的に次のようになります。私はそれが任意のベアリングを持っている疑いかかわら
#ifdef PREPROCESSOR_CONDITION
if (runtime_condition) {
} else
#endif
{
//expression
}
私は、マクロビットが含まれています。 runtime_conditionがtrueのときに実行されるコードはありません。elseブロックだけが実行されます。私はこれをif(!runtime_condition)とelseブロック(これはもっと簡単だろう)と全く同じにするべきだと思っていますが、何らかのコンパイラ最適化が起こっているのでしょうか?
または、あなたが知っているのは、削除されたifブロック内に何かがあった可能性があります。常にを条件付き間違いを確保
'if(runtime_condition)'と空のコードブロックでは、誰かが「空白を埋める」のを待っている例です。それは奇妙ではありませんが、よく使用されるテクニックです。 –
このコードは公開されていますか?私たちが文脈を知っていれば、より良い答えを出すことができるかもしれません。時には、すでに複雑なif条件に否定を加えないことは明白です。同僚は空の真の部分に '/ * how nice * /'というコメントを追加して読者に見落としではないことを示していました。 –
何らかのバージョン管理システムにチェックインされている場合は、ファイル履歴をチェックして、空のブロックからコードが削除されたかどうかを確認できます。 gitでは、例えば 'git blame'を使うことができます。 – MrEricSir