c-lang:プリプロセッサ
Cでは、プリプロセッサによりある種の言語仕様が与えられる。 プリプロセッサは、概念的には、コンパイレーションの分離した最初のステップである。
これで、最もよく使われる二つの機能は、コンパイル中にファイルの内容を読込むための#include と、トークンを任意の文字列に置換するための#define とであろう。
ほかに、条件付きコンパイルや引数付きのマクロが含まれる。
C のプリプロセッサは確かにあまり派手な存在とはいえない。 詳しい解説がされることもあまりない。
プリプロセッサの書式
プリプロセッサは、C コンパイラの一部ではない。
C コンパイラとは全く違ったシンタックスを用い、それを使うためには、まったく違った心づもりが必要である。
問題の多くは、プリプロセッサをC本体と同じように扱うところから生じる
# + 制御指令 パラメータリスト
ANSI では # の前後に空白をおいてよい。
プリプロセッサ命令は行の終了まで有効。(ここでいう行は、C言語の行とは異なる。)
\ で終わる行は、次の行と併合される。
よく使われるプリプロセッサ命令
#include
ファイルのインクルード
#define
置換するためのマクロ
#ifdef ~ #endif
条件付きコンパイル
条件付きコンパイルには、この他にもいくつかの命令がある。
あまり使われないプリプロセッサ命令
#line 定数 識別子
コンパイラのメッセージに行番号を付ける、詳細略。
#error 文字列
コンパイル中エラーが発生するとこの文字列を出力する。
#pragma