类声明通常如下所示:
#ifndef MY_CLASS_20141116
#define MY_CLASS_20141116
...
class MyClass
{
...
}
#endif
我的问题是,为什么不使用类名而不是重新定义一个新的标识符:
#ifndef MyClass
...
class MyClass
{
}
#endif
我猜它与标识符冲突(相同的标识符可能出现两次)或命名空间的使用有关(我不知道是否可以在#ifndef 指令中使用像 std::array 这样的完整标识符)。
这将是一个更彻底的解释。
另外,使用命名空间时可以使用第二个测试吗?
#ifndef A::MyClass //not compile, any equivalent?
namespace A
{
...
class MyClass
{
}
}
#endif