当使用未命名的命名空间时,如果它嵌套在另一个命名空间中,是否存在任何问题?例如,在以下代码中,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();
}
}
nm
或gdb
进行检查,它们会将其称为anonymous namespace
,因此产生混淆是可以理解的。 - David Rodríguez - dribeas