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