あなたが言及するタイプは、標準(POSIXなど)やさまざまな主要な実装から何年にもわたって蓄積されてきた可能性があるため、何もありません。適切な例はxstr
、assert
両方とも小文字のマクロです。ただし、C-FAQ 12.9を読んだことを確認してください。そうすれば、準備は万端です。
標準の予約済み識別子のセクションも調べてください。これが私のN1570のコピーが言っていることです:
7.1.3予約済み識別子
1各ヘッダーは、関連する副節にリストされているすべての識別子を宣言または定義し、オプションで、関連する将来のライブラリ方向の副節にリストされている識別子と、任意の使用またはファイルスコープ識別子としての使用のために常に予約されている識別子を宣言または定義します。—アンダースコアで始まり、大文字または別のアンダースコアのいずれかで始まるすべての識別子は、常に使用できるように予約されています。—アンダースコアで始まるすべての識別子は、通常の名前空間とタグの名前空間の両方でファイルスコープを持つ識別子として使用するために常に予約されています。
—次の副次句(将来のライブラリの方向を含む)の各マクロ名は、関連するヘッダーのいずれかが含まれている場合に指定されたとおりに使用するために予約されています。特に明記されていない限り(7.1.4を参照)。
—次の副節(将来の図書館の方向性を含む)およびerrnoのいずれかで外部リンケージを持つすべての識別子は、常に外部リンケージを持つ識別子として使用するために予約されています。184)
—次の副節(将来のライブラリの方向を含む)のいずれかにリストされているファイルスコープの各識別子は、マクロ名として、および関連するヘッダーのいずれかが含まれている場合は同じ名前空間のファイルスコープの識別子として使用するために予約されています。
2他の識別子は予約されていません。プログラムが予約されているコンテキスト(7.1.4で許可されている場合を除く)で識別子を宣言または定義する場合、または予約された識別子をマクロ名として定義する場合、動作は未定義です。
3プログラムが(#undefを使用して)上記の最初のグループの識別子のマクロ定義を削除した場合、動作は未定義です。