- マクロ代入( #define )
- プログラムのプロパティ (#property)
- ファイルの読み込み (#include)
- 関数のインポート( #import )
- 条件付きコンパイル( #ifdef、#ifndef、#else、#endif )
マクロ代入( #define )
プリプロセッサディレクティブはコンパイルする前にソースコードを前処理するためにコンパイラによって使用されます。ディレクティブは常に#で始まります。したがって、コンパイラは変数名、関数名などでのこのシンボルの使用を禁止します。
各ディレクティブはエントリごとに指定されます。1つのエントリで複数のディレクティブを使用することはできません。ディレクティブエントリが大きすぎる場合は、 '\' 記号を使用して複数の行に分割します。この場合、次の行はディレクティブエントリの続きと見なされます。
#define ディレクティブは、定数にニーモニック名を割り当てるために使用することが出来ます。#define には 2 つの形式があります。
#define 識別子式 // パラメータなしの形式
|
#define ディレクティブは後に続くソーステキストで識別子があった場合その全てに式を代入します。代入は識別子が独立したトークンである場合にのみ行わます。代入は識別子がコメントの一部、文字列の一部、または他の長い識別子の一部である場合には行われません。
定数識別子は、変数名と同じ規則によって扱われます。値は任意の型のものとすることが出来ます。
#define ABC 100
|
式はキーワード、定数、定数及び非定数式などのいくつかのトークンで構成されます。式は行の終わりで終了し、次の行に続くことは出来ません。
例:
#define TWO 2
|
パラメトリック形式の #define
パラメトリック形式の場合、後続する識別子の全てが実際のパラメータを考慮して代入されます。例えば、
// 2 つのパラメータ a と b を使用する例
|
見つけにくい非明白なエラーを防ぐために、式の中でパラメータを使用する際にはパラメータを括弧で囲むようにしてください。ブラケットを使用せずにコードを書き換えると、結果が異なります。
// 2 つのパラメータ a と b を使用する例
|
パラメトリック形式では、最大で 8 つのパラメータが使用可能です。
// パラメトリック形式の正しい使い方
|
#undef ディレクティブ
#undef は、前に定義されたマクロ代入の宣言を解除します。
例:
#define MACRO
|
参照