C++ C++;名称空间问题

C++ C++;名称空间问题,c++,namespaces,C++,Namespaces,我正在编写一些代码,这些代码是由一位不再在公司工作的同事编写的,我发现了以下代码:(我在下面删掉了这些代码) 我不理解第3行和第8行的名称空间命令的用途。 有人能解释一下没有名称的名称空间条目的用途吗? 谢谢,这是一个“匿名名称空间”——它创建了一个隐藏的名称空间,保证每个“翻译单元”(即每个CPP文件)都是唯一的 这实际上意味着该名称空间内的所有项都从编译单元外部隐藏。它们只能在同一文件中使用。另请参见未命名名称空间。有趣。我不知道你能做到。我必须记住这一点。它还揭示了static变量(编译单

我正在编写一些代码,这些代码是由一位不再在公司工作的同事编写的,我发现了以下代码:(我在下面删掉了这些代码)

我不理解第3行和第8行的名称空间命令的用途。
有人能解释一下没有名称的名称空间条目的用途吗?
谢谢,这是一个“匿名名称空间”——它创建了一个隐藏的名称空间,保证每个“翻译单元”(即每个CPP文件)都是唯一的


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

有趣。我不知道你能做到。我必须记住这一点。它还揭示了
static
变量(编译单元可见性)的需要。static有时仍然很有用。它将使名称没有外部链接,而匿名名称空间将更改名称的链接。嗯,我认为未命名名称空间强制内部链接,但只是查找它,看起来你是对的。真想不到……:)@GregRogers:是的,链接很重要,模板只能用外部链接的对象实例化(例如,尝试在函数内声明一个类并在向量内使用它<>,不起作用,在函数外的未命名命名空间中的类:将起作用…)
namespace NsA { namespace NsB { namespace NsC {

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

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