C/C++ アンダースコアは予約

この規定は 2 つの言語で微妙に異なっています。C90 および C99 規格では、次の名前が実装系のために予約されています。

グローバル スコープを持ち、_ で始まる名前


_ で始まり、その次が大文字の名前


__ で始まる名前
C++ 規格では、次の名前が実装系のために予約されています。

グローバル スコープを持ち、_ で始まる名前


_ で始まり、その次が大文字の名前


__ を含む名前
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdndeepc/htm/deep04202000.asp

二重インクルード防止をどう書く
http://www.tietew.jp/cppll/archive/940