

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
プリプロセッサディレクティブとは何か
プリプロセッサディレクティブとは、ソースコードをコンパイルする前に動作する指示のことです。これらの指示は通常 ハッシュ記号 (#) で始まります。主に C/C++ などの言語で使われ、コードの配置や条件付きの処理を制御します。
代表的なディレクティブ
| ディレクティブ | 説明 |
|---|---|
| #include | 別のファイルをソースに取り込む。例: <stdio.h> など |
| #define | マクロを定義して、後で使えるようにする。 |
| #ifdef / #ifndef | マクロが定義されているかどうかで条件を分岐する。 |
| #if / #elif / #else / #endif | 条件付きのコンパイルを実現する複雑な分岐。 |
| #undef | 既に定義したマクロを未定義にする。 |
| #pragma | コンパイラに特別な指示を出す。実装依存のことが多い。 |
例として次のような使い方があります。プリプロセッサディレクティブは画面上には現れず、コンパイル時に処理されます。条件付きでコードを切り替える例を見てみましょう。
例: #include <stdio.h> を使うと標準出力の関数が使えます。
マクロの定義の例です。マクロ定義 は次のようになります。 <span>#define PI 3.14 という形です。
条件付きコンパイルの例です。
#if defined(WINDOWS)
#include <windows.h>
#endif
注意点
プリプロセッサディレクティブはソースコードの見た目を変えませんが、コンパイルの挙動を変えます。 つまりプログラムの実行には直接影響しませんが、ビルド時の挙動に大きく影響します。
また、移植性の問題があります。異なるコンパイラや環境では解釈や動作が異なることがあるため、使い方には注意が必要です。
初心者がよくやるミスとして、マクロ名の衝突、セミコロンの付け方を忘れる、条件分岐の括弧を誤るなどがあります。これらはコードが正しく動かない原因になりやすいので、丁寧に確認しましょう。
まとめ
プリプロセッサディレクティブはプログラムを実行前に整える道具です。 使い方を理解しておけば、コードの再利用性を高めたり、プラットフォームごとの差を扱うのが楽になります。
プリプロセッサディレクティブの同意語
- プリプロセッサディレクティブ
- プリプロセッサが解釈する指示の総称。マクロの展開や条件付きコンパイル、ファイルの挿入など、プリプロセス段階で動作する命令を指します。
- 前処理ディレクティブ
- 同義の別表現。C/C++ などの前処理段階で解釈される指示で、include や define、条件分岐などを含みます。
- 前処理指示
- 前処理段階で実行される指示のこと。ファイルの取り込み・マクロ展開・条件付きのコード生成を指します。
- プリプロセッサ命令
- プリプロセッサが実行する命令のこと。コードの展開や条件判断、挿入といった処理を含みます。
- プリプロセッサ指示
- プリプロセッサに対して出す指示全般を指す表現。ifdef や include などが代表例です。
- プリプロセス指示
- 前処理の段階で使用される指示の言い換え。ディレクティブとほぼ同義です。
- 条件付きディレクティブ
- 条件に応じてコードの有効/無効を切り替える指示。#if / #ifdef などが代表的な例です。
- 条件付きプリプロセ processorディレクティブ
- 条件に応じてプリプロセッサの動作を制御するディレクティブ。条件が満たされると特定のコードが展開・無効化されます。
- マクロ関連ディレクティブ
- マクロの定義・置換といったマクロ関連の操作を指示するプリプロセッサのディレクティブ群。#define や #undef などが含まれます。
プリプロセッサディレクティブの対義語・反対語
- 通常のコード
- プリプロセッサディレクティブを必要とせず、コンパイラが直接解釈するC/C++の通常のソースコード。#include などの前処理指示は含まれず、実行時に動作する部分。
- 実行時コード
- プリプロセスで処理されず、プログラムが実行される時に動作するコードのこと。ディレクティブではなく、ロジックを表すコード。
- プリプロセス不要コード
- プリプロセッサの段階を経ずに直接コンパイルされるコード。# や #define などの前処理指示を使わない、あるいは使っていてもディレクティブとして機能しないコード。
- マクロを使わないコード
- define で定義したマクロを使わず、実際の処理をマクロ展開に依存しないコード。
- ディレクティブなしコード
- プリプロセッサディレクティブが含まれていない、通常のソースコードの状態を指す表現。
- 直接コンパイルされるコード
- プリプロセスを経ずにそのままコンパイラに渡され、通常のC/C++文として解釈されるコード。
プリプロセッサディレクティブの共起語
- #define
- マクロを定義するプリプロセッサディレクティブ。コード中の識別子を別の文字列や式に置換します。
- マクロ
- 一度定義された文字列や式の置換ルール。プリプロセッサの核となる機能です。
- #include
- 別のファイルを現在のファイルに挿入する指示。主にヘッダファイルを取り込む時に使います。
- ヘッダファイル
- 宣言や定義をまとめたファイル。複数ファイルで共有する際に #include で読み込みます。
- インクルードガード
- ヘッダファイルが二度読み込まれるのを防ぐための仕組み。#ifndef 〜 define 〜 endif の組み合わせで実現します。
- #if
- 条件付きでコードをコンパイルするか決める指示。ビルド設定に応じてブロックを有効化/無効化します。
- #ifdef
- 指定したマクロが定義されている場合のみコードを有効化します。
- #ifndef
- 指定したマクロが未定義の場合にコードを有効化します。
- #elif
- 前の条件が偽のとき、別の条件を評価して別ブロックを実行します。
- #else
- 前の条件がすべて偽のときに実行されるブロックを指定します。
- #endif
- 条件付きブロックの終わりを示します。
- #undef
- 既に定義済みのマクロを未定義にします。
- #pragma
- コンパイラに対して特別な指示を出すためのディレクティブ。実装依存です。
- #line
- プリプロセッサにファイル名と行番号を再設定させる指示。デバッグ情報に影響します。
- #error
- 指定メッセージをエラーとして出力し、ビルドを停止させます。
- #warning
- 警告メッセージを出力します。
- 条件付きコンパイル
- 条件式に基づいて特定のコードだけを有効化する仕組み。主に #if/ #else/ #endif で組みます。
- マクロ展開
- 定義済みのマクロがソースコード内で実際の文字列に置換される過程。
- トークン結合
- マクロ展開時に ## 演算子を使って隣接トークンを結合します。
- #region
- エディタでコードを折りたたむ区域を定義するディレクティブ。特に C# などで使われます。
- #endregion
- region の終わりを示します。
プリプロセッサディレクティブの関連用語
- プリプロセッサディレクティブ
- ソースコードの前処理段階で解釈される指示の総称。行頭が # で始まるものが多く、マクロ定義・ファイル挿入・条件付き処理などを行います。
- マクロ
- コードの置換ルール。#define で新しく定義し、展開時にソース内の該当箇所を定義内容に置換します。
- #define
- 新しいマクロを定義するディレクティブ。マクロ名と展開内容を指定します。
- #undef
- 定義済みマクロを未定義にするディレクティブ。
- #include
- 別のファイルの内容を現在のファイルに挿入するディレクティブ。引数にはダブルクォーテーション形式と尖括弧形式がある。
- ヘッダファイル
- 関数宣言・型定義・マクロなどをまとめて提供するファイル。多くはヘッダファイル(.h)として用意され、#include で取り込まれます。
- インクルードガード
- 二重に同じファイルを読み込むことを防ぐ仕組み。一般的には #ifndef <識別子> #define <識別子> … #endif で実装します。
- 条件付きコンパイル
- 特定の条件下でのみコードをコンパイルする機能。主に #if, #ifdef, #ifndef, #else, #elif, #endif を組み合わせて使います。
- #if
- 条件を評価して対応するブロックを有効にするディレクティブ。
- #ifdef
- 指定したマクロが定義されている場合にブロックを有効にします。
- #ifndef
- 指定したマクロが未定義の場合にブロックを有効にします。
- #elif
- 前の条件が偽のとき、別の条件を評価するディレクティブ。
- #else
- 前の条件が成立しない場合に実行するブロックを指定します。
- #endif
- 条件付きブロックの終わりを示します。
- #pragma
- コンパイラへ特定の指示を出すディレクティブ。実装依存的なことが多いです。
- #error
- コンパイル時にエラーメッセージを出力してビルドを停止させるディレクティブ。
- #warning
- コンパイラに警告を出す拡張ディレクティブ(コンパイラ依存のことが多いです)。
- 文字列化演算子
- マクロの引数を文字列として展開する演算子 (#)。
- トークン連結演算子
- マクロの引数を別のトークンと結合して新しいトークンを作る演算子 (##)。
- マクロ関数
- 引数を受け取るマクロ。関数のように呼び出して展開内容を生成します。
- 前処理ステージ
- プリプロセッサがファイルを読み込み、マクロ展開・ファイル挿入・条件判断などを行う処理の段階。
- インクルードパス
- #include で検索されるディレクトリのリスト。コンパイラ設定で指定します。
- #include の形式差
- ダブルクォーテーション形式 ("file.h") は自ファイルのあるディレクトリを優先、尖括弧形式 (
) は標準ライブラリなどのディレクトリを優先して検索します。



















