予約済み識別子

C 言語の仕様で、あまり知られていないながら注意点があります。
「予約済み識別子」を自分で作成したプログラムの変数名・マクロ名に使用してはいけないことです。


「予約済み識別子」とは、識別子の一文字目が下線 '_'で、続く二文字目が、下線 '_' かアルファベット大文字(A-Z) で始まる識別子のことです。
詳細は、JIS規格「JISX3010」の「7.1.3 予約済み識別子」の項目を見ればよいでしょう。
また、
予約済み識別子 | 移植性のあるCプログラミング
でも分かりやすく述べられています。


僕は、よくインクルードガードで __FILENAME_H__ としていました。
これが、「予約済み識別子」となってしまいます。
注意しましょう。