C ++命名空间问题

时间:2008-11-25 15:30:49

标签: c++ namespaces

我正在处理一些不再与公司合作的同事编写的代码,我找到了以下代码:(我在下面删除了)

namespace NsA { namespace NsB { namespace NsC {

    namespace { 
        class A { /*etc*/ };
        class B { /*etc*/ };
    }    

    namespace {
        class C { /*etc*/ };
    }
} } }

我不明白第3行和第8行命名空间命令的用途 有人能解释一下没有名字的命名空间条目的目的是什么吗? 感谢

1 个答案:

答案 0 :(得分:36)

这是一个“匿名命名空间” - 它创建一个隐藏的命名空间名称,保证每个“翻译单元”(即每个CPP文件)是唯一的。

这实际上意味着该命名空间内的所有项都在编译单元外部隐藏。它们只能在同一个文件中使用。另请参阅有关未命名命名空间的this article