コンパイラはこのif文を削除しますか?コンパイラは常にゼロに評価されるブロックを削除しますか?
#define DEBUG 0
int main(int argc, char ** argv)
{
if(DEBUG)
{
...
}
return 0;
}
私はこれをGoogleに試みて、stackoverflowを検索しましたが、情報を見つけることができなかったため、検索条件が悪いと思います。
これが最適化されていれば、最適化について知りたいことを読んでみたいと思いますか?
コンスタンタン
コンパイラに出力のアセンブリリストを生成するように依頼することで、いつでも自分自身を見つけることができます。 –
あなたのコンパイラとそのオプションによって異なりますが、おそらくブロック全体が削除されます。あなたが必要とするコードを実際に追加したり削除したりするのであれば、ifを使用する代わりに#ifdefを使って条件付きコンパイルを使用します。 – Dampsquid
コンパイラが標準によってxまたはyを実行できるようになると、xを実行するコンパイラとyを実行するコンパイラが常に見つかります。だから、このような質問をするのは、常に「試してみてください」と答えただけです。 – PlasmaHH