
255
15
章
プリプロセッサ指令
「1.7C コンパイラの働き」で Cソースから実行プログラムへの翻訳の8段階の概要を示
した。前半4段階でCプリプロセッサがコンパイラのためにソースコードを準備する。コメ
ントを削除し、プリプロセッサ指令がその実行結果で置き換えられる。
本章は Cプリプロセッサ指令を述べる。他のソースファイルの内容を取り込む、ある条
件下でのみコンパイルするコード部分を指定する、プリプロセッサが他のテキストと置き換
える識別子であるマクロを定義する等がある。
プリプロセッサ指令は行ごとに書かれ、文字
#
から始まる。その行では空白とタブしか
#
の前に書けない。指令は最初の改行文字で終わる。最短プリプロセッサ指令は、空指令だ。
この指令は文字
#
だけの行であり、コメントか空白文字を含められる。空指令は何の効果も
持たない。プリプロセッサは空指令をソースファイルから取り除く。
指令が1行に収まらないなら、行末に
バックスラッシュ(
\
)を追加して、指令を次の行に
続けられる。次にその例を示す。
#define MacroName A long, \
long macro replacement value
バックスラッシュが改行文字の前の最後の文字でなければならない。プリプロセッサは
バックスラッシュと改行の対を取り除き行を連結する。プリプロセッサがコメントを空白に
置き換えるので、バックスラッシュと改行の間にコメントを置くと同じ結果にはならない。
空白とタブは指令の
#
文字と指令の名前の間に置くことが