プリプロセッサでコメントアウト

最近cppllに流れてたネタ。

C言語ないしC++区間まとめてコメントアウトするのに、/*...*/でなく、プリプロセッサの#if #endifディレクティブを使うというのがあった。コメントというよりは、事実上のコメントといったとことろだろうか。

// コメント
boo();

/*
コメント
*/
foo();

#if 0
事実上のコメント
woo();
#endif

コメントアウト」の文字どうおり、本来はコンパイル可能なコードを一時的あるいは半恒久的にコンパイル対象から外す措置としてはこういうやりかたもあったかー、とちょっと納得してみたり。プリプロセッサ命令を使った条件付きコンパイルは普通にやるけど、ここまでの発想はなかったな。

最近の統合開発環境では、コンパイルオプションに合わせて#if #else #elif #endifディレクティブの区間をエディタ上で色分けしてくれるっぽい。Visual Studio 2005はそうなっていた。単独のエディタにはないメリットかな。でも、コンパイルオプション変えるたびに全部計算し直したりして重くなることを考えると一長一短。vimでも#if 0のような静的なものはちゃんと色分けしてくれるのでそれで十分なことが多い。