複数回ヘッダファイルをインクルードすることを防止する。
同一のヘッダファイルを同じ翻訳単位にインクルードすることは問題となる。
なぜなら、C++ の基本規則である単一定義規則(One Definition Rule(ODR))に違反するからである。
ヘッダファイルは直接あるいは間接的なインクルードによって複数回インクルードされるかもしれない。
インクルードガードマクロ(Include Guard Macro)イディオムは C でも適用可能な古いイディオムである。
ある翻訳単位で複数回ヘッダファイルをインクルードすることを防ぐために、単純な #define を使う。
以下のようなマクロを、ヘッダファイルの先頭と末尾に置く(訳註：__ で開始する名前は実装に予約されている)。
...
コンパイラによっては
を、インクルードガードの効率的な代替手段としてサポートしている場合がある。
伝統的なインクルードガードマクロとは異なり、2 回以上ヘッダファイルを開く必要がない。
事実上、世界中の全てのヘッダファイル！
More C++ Idioms/Include Guard Macro
]]