クラス宣言は通常次のようになります。
#ifndef MY_CLASS_20141116
#define MY_CLASS_20141116
...
class MyClass
{
...
}
#endif
私の質問は、新しい識別子を再定義する代わりにクラス名を使用しない理由です。
#ifndef MyClass
...
class MyClass
{
}
#endif
識別子の競合 (同じ識別子が 2 回表示される可能性がある) または名前空間の使用 (std::array のような完全な識別子が #ifndef ディレクティブで使用される可能性があるかどうかはわかりません) に関連するものがあると思います。
もっと丁寧な説明があれば最高です。
また、名前空間を使用する場合、2 番目のテストを使用することは可能ですか?
#ifndef A::MyClass //not compile, any equivalent?
namespace A
{
...
class MyClass
{
}
}
#endif