こんにちは。
VC6.0 で
if(0){
(デバッグ文);
}
と書くとコンパイルされますか?
やっぱり、#if 0 ~ #endif でくくらないと駄目ですか?
質問の意味わかりませんが~?
ご自身コンパイラ持っていないのですか
それとも何かを流用するための質問ですか
ご自身でif(0){} のパターンと if(1){} のパターンで作成される
実行ファイルのサイズを比較してみれば一目瞭然と思いますが。
コンパイルはされますよ。
実行ファイルにそのコードができるかどうかはまた別問題ですけど。
みなさん、レスありがとうございます。
> ご自身でif(0){} のパターンと if(1){} のパターンで作成される
> 実行ファイルのサイズを比較してみれば一目瞭然と思いますが。
その通りですね。
実は単に調べるのが面倒だったもので、申し訳ないです(汗。
今やってみたところ、プログラムのサイズがいっしょだったので、
if(0)以下のコードも実行ファイルに含まれてしまうみたいですね。
gccのように、if(0){}が実行ファイルに含まれないようにする
コンパイルオプションってないんでしょうか?
どちらかというとリンクオプションでわ?
最適化とか・・・。 思っただけ。。
サイズ優先でコンパイルすれば削除されませんか?
とりあえず,Visual C++ 5.0 (SP3) (cl version 11.00.7022)では削除されましたが。
ちなみに,最適化はコンパイル時の処理です。
リンク時にすることは不可能だと思います。
#eaxの値が何に使われるのかコンパイラは知っていますがリンカは知らないですから。