読み方 : じょうけんつきコンパイル

条件付きコンパイル【conditional compilation】

概要

条件付きコンパイルとはソースコードコンパイルする際、特定の条件が満たされた場合にのみ指定した範囲のコードをコンパイル対象に含める手法。一つのソースコードから、デバッグ用とリリース用、あるいは、OSや機種、言語環境ごとに異なる実行ファイルを生成できる。
条件付きコンパイルのイメージ画像

通常のコンパイルでは、ソースコード全体を先頭から順に処理してオブジェクトコードを生成する。条件付きコンパイルでは、コンパイラへの指示を記述するための専用の構文(ディレクティブ)をソースコード中に埋め込み、コンパイル時に有効化・無効化するコードの範囲を切り替える。

条件の評価は「プリプロセッサ」(preprocessor)が担い、指定された条件を満たさないコードはコンパイラに渡される前に除外される。除外されたコードは生成される実行ファイルにも含まれない。また、除外された範囲に構文エラーがあってもコンパイルエラーにはならない。

典型的な用途として、デバッグ用コードの管理がある。ログ出力や変数の検査処理をソースコードに含めておき、開発環境におけるデバッグビルド時のみその範囲をコンパイル対象にすることで、リリース版のバイナリには不要なコードを混入させずに済む。リリース時にデバッグ用のコードを除去する手間も省け、その際のミスによるデバッグ用コードの混入も防げる。

また、WindowsLinuxのように対象プラットフォームが複数ある場合に、オペレーティングシステム(OS)ごとに異なる処理を一つのソースコードにまとめておき、ビルド時に適切なブロックだけを選択する用途にも使われる。表示言語や地域設定の切り替え、あるいは無償版と有償版で利用できる機能を制限または開放する際にも活用される。

C言語やC++言語では #ifdef、#ifndef、#if、#endif などのプリプロセッサディレクティブが条件付きコンパイルの代表的な構文として知られる。RustSwiftなど比較的新しい言語にも同様の仕組みが備わっており、構文や条件の指定方法は言語ごとに異なるが、コンパイル対象のコードを制御するという目的は共通している。実行時の条件分岐とは異なり、不要なコードそのものがコンパイル対象から除外されるため、生成物のサイズ削減や環境ごとの最適化が可能である。

(2026.6.15更新)
 

他の辞典等による「条件付きコンパイル」の解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。