プリプロセッサ

更新日:

用語解説

プリプロセッサは、コンパイラなど本来の言語処理に渡す前に原始プログラムを前処理し、マクロ展開、ファイル取込み、条件付きコンパイル、記号置換などを行って別のソースを生成するプログラムです。

■ 試験で押さえるポイント

  • C言語では#defineでマクロを定義し、#includeでヘッダ内容を取り込み、#ifなどで対象環境に応じてコンパイル対象を切り替えます。

  • 一般に文字・トークンレベルの置換を行うため、型を理解した関数呼出しとは異なります。括弧不足や引数の複数評価などマクロ特有の不具合に注意します。

  • プリプロセッサ出力をコンパイラが字句・構文・意味解析して目的コードへ翻訳します。前処理だけでは通常、実行可能プログラムになりません。

  • 条件付きコンパイルは異なるOSや機能向けのコードを一つの原本で管理できますが、条件の組合せが増えると未テスト経路が増えるため構成管理が必要です。

■ 選択肢での判断ポイント

「翻訳前」「マクロ展開」「ファイル取込み」「条件付きコンパイル」が識別語です。外部参照解決はリンカ、実行時の動的最適化はJITです。

例: #define SQUARE(x) ((x)*(x))を前処理すると、SQUARE(a)は((a)*(a))へ展開されます。SQUARE(i++)ならiが2回更新され得るため、副作用を持つ式を渡さない設計が必要です。

音声で聞く

同じ分野の用語