我正在处理一些不再与公司合作的同事编写的代码,我找到了以下代码:(我在下面删除了)
namespace NsA { namespace NsB { namespace NsC {
namespace {
class A { /*etc*/ };
class B { /*etc*/ };
}
namespace {
class C { /*etc*/ };
}
} } }
我不明白第3行和第8行命名空间命令的用途 有人能解释一下没有名字的命名空间条目的目的是什么吗? 感谢
答案 0 :(得分:36)
这是一个“匿名命名空间” - 它创建一个隐藏的命名空间名称,保证每个“翻译单元”(即每个CPP文件)是唯一的。
这实际上意味着该命名空间内的所有项都在编译单元外部隐藏。它们只能在同一个文件中使用。另请参阅有关未命名命名空间的this article。