在C++中没有名称的命名空间

pro*_*eek 43 c++ namespaces

可能重复:
未命名/匿名命名空间与静态函数

我遇到了这段代码

namespace ABC {
namespace DEF {

namespace
{
Run Code Online (Sandbox Code Playgroud)

我希望命名空间后面应该有一些名称,但是这个代码并不是这样.

在C++中允许这样做吗?这个未命名的命名空间的优点是什么?

Mar*_*lon 68

它被称为未命名的命名空间/匿名命名空间.它的用途是使函数/对象/ etc只能在该文件中访问.它与staticC中几乎相同

  • 除了一个文件中的 `namespace { void foo() { } }` 之外,从另一个文件中使用 `#include` 并尝试调用 `foo();` 是有效的。它只能在该文件中访问。这意味着,里面的东西有内在的联系。我想说这是答案中一个非常关键的疏忽。 (6认同)