C/C++ アンダースコアは予約
この規定は 2 つの言語で微妙に異なっています。C90 および C99 規格では、次の名前が実装系のために予約されています。
グローバル スコープを持ち、_ で始まる名前
_ で始まり、その次が大文字の名前
__ で始まる名前
C++ 規格では、次の名前が実装系のために予約されています。
グローバル スコープを持ち、_ で始まる名前
_ で始まり、その次が大文字の名前
二重インクルード防止をどう書く
http://www.tietew.jp/cppll/archive/940