オブジェクト類似マクロ定義 は、 単一の ID を指定された置換トークンに置き換えます。 以下のオブジェクト類似の定義を使用すると、プリプロセッサーは、ID COUNT のこれ以降のすべてのインスタンスを、定数 1000 に置き換えます。
#define COUNT 1000
次のステートメント
int arry[COUNT];
が、この定義の後、かつ定義と同じファイル内に現れると、プリプロセッサーは、 このステートメントをプリプロセッサーの出力で、以下のステートメントのように変更します。
int arry[1000];
他の定義が ID COUNT を参照することができます。
#define MAX_COUNT COUNT + 100
プリプロセッサーは、MAX_COUNT のこれ以降の出現を COUNT + 100 に置き換えます。 これを、プリプロセッサーは、さらに 1000 + 100 に置き換えます。
マクロ展開によって部分的に構築された番号が作成された場合、プリプロセッサーは、 その結果を単一の値であるとは見なしません。 例えば、以下の結果は 10.2 という値にはならず、構文エラーになります。
#define a 10 a.2
マクロ展開によって部分的に構築される ID は、作成されない場合があります。 したがって、以下の例は、2 つの ID を含んでいて、結果は構文エラーとなります。
#define d efg abcd
関連参照