#if, #ifdef, #ifndef, #else, #elif, #endif
これらの6つのプリプロセッサコマンドは、コンパイラのロジックを制御するためのものです。 このコマンドを使用すると、ファイルがコンパイルされるときに、特定の行を含めたり、外したりということを行うことができるようになります。
#if 式
もしも式の結果の値がtrueであれば、このコマンドの行からすぐあとのコード群がコンパイルされるようになります。
#ifdef マクロ
指定されたマクロが、#defineを使って定義済みの場合には、このコマンドの行からすぐあとのコード群がコンパイルされるようになります。
#ifndef マクロ
指定されたマクロが、#defineを使って定義済みで なかった 場合には、このコマンドの行からすぐあとのコード群がコンパイルされるようになります。
補足メモ: #elif というコマンドは “elseif” という表現を縮めたように見えますが、まったくその通りに動作します。また、 #ifの直後に”defined”, ”!defined”と書くこともできます。
これらのすべてを使ったサンプルを紹介します:
#ifdef DEBUG cout << "これはテスト版です。, i=" << i << endl; #else cout << "これは製品版です!" << endl; #endif
このサンプルは、デバッグのために数多くのcoutをコードに埋め込んだり外したりを間違いなく行うよりは、ずっと簡単にデバッグすることができることがおわかりだと思います。
関連トピック: #define