Translations of this page?:

プリプロセッサ条件分岐

#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

 
• • • IndexRecent changesRSScc