プリプロセッサ
提供: cppreference.com
< c
プリプロセッサはコンパイル前、翻訳のフェーズ 4 で実行されます。 プリプロセッサの処理結果は実際のコンパイラに渡される単一のファイルです。
目次 |
[編集] 指令
プリプロセッサ指令はプリプロセッサの動作を制御します。 各指令は 1 行を占め、以下の形式を持ちます。
-
#文字 - プリプロセッサ命令 (
define,undef,include,if,ifdef,ifndef,else,elif,endif,line,error,pragmaのいずれか) [1] - 引数 (命令によります)
- 改行
空指令 (# に改行が続いたもの) も使うことができ、何の効果も持ちません。
[編集] 能力
プリプロセッサはソースファイル変換の能力を持ちます。
- ソースファイルの一部を 条件コンパイルする ((
#if,#ifdef,#ifndef,#else,#elif,#endif指令によって制御されます)。 - テキストマクロを 置換すると共に識別子を連結したり引用符で囲んだりする (
#define,#undef指令および#,##演算子によって制御されます) - 他のファイルをインクルードする (
#include指令によって制御されます) - エラーを発生させる (
#error指令によって制御されます)
プリプロセッサの以下の面は制御することができます。
- 処理系定義の動作 (
#pragma指令および_Pragma演算子 (C99以上)によって制御できます) - ファイル名と行番号情報 (
#line指令によって制御されます)
[編集] 脚注
- ↑ これらは標準で定義されている指令です。 標準はこれ以外の指令について動作を定義していません。 それらは無視されたり、何らかの役に立つ意味を持っていたり、プログラムを ill-formed にしたりします。 無視される場合であっても、プリプロセッサ処理後のソースコードからは除去されます。 非標準の拡張としてよくあるのは
#warningで、これはコンパイル中にユーザー定義のメッセージを発行します。

