使用匿名命名空间时,如果它嵌套在另一个命名空间中会有任何问题吗?例如,在以下代码中Foo1.cpp和Foo2.cpp之间是否存在任何真正的区别:
// Foo.h
namespace Foo
{
void fooFunc();
}
// Foo1.cpp
namespace Foo
{
namespace
{
void privateFunction()
{
...
}
}
void fooFunc()
{
privateFunction();
}
}
// Foo2.cpp
namespace
{
void privateFunction()
{
...
}
}
namespace Foo
{
void fooFunc()
{
privateFunction();
}
}
Run Code Online (Sandbox Code Playgroud)
Kir*_*sky 31
匿名命名空间可以被视为具有您不知道的唯一名称的普通命名空间.根据C++标准7.3.1.1:
未命名的命名空间定义的行为就像被替换为
Run Code Online (Sandbox Code Playgroud)namespace unique { /* empty body */ } using namespace unique; namespace unique { namespace-body }其中翻译单元中所有唯一的出现都被相同的标识符替换,并且该标识符与整个程序中的所有其他标识符不同.
没有其他问题.