我正在编写一些由不再与公司合作的同事编写的代码,我发现了以下代码:(我在下面删减了)
namespace NsA { namespace NsB { namespace NsC {
namespace {
class A { /*etc*/ };
class B { /*etc*/ };
}
namespace {
class C { /*etc*/ };
}
} } }
我不明白第 3 行和第 8 行命名空间命令的用途。
谁能解释一下没有名字的命名空间条目的目的是什么?
谢谢
最佳答案
这是一个“匿名命名空间”——它创建了一个隐藏的命名空间名称,保证每个“翻译单元”(即每个 CPP 文件)都是唯一的。
这实际上意味着该命名空间内的所有项目都隐藏在该编译单元之外。它们只能在同一个文件中使用。另见 this article在未命名的命名空间上。
关于C++ 命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/317719/