C++ C++;名称空间问题
我正在编写一些代码,这些代码是由一位不再在公司工作的同事编写的,我发现了以下代码:(我在下面删掉了这些代码) 我不理解第3行和第8行的名称空间命令的用途。C++ C++;名称空间问题,c++,namespaces,C++,Namespaces,我正在编写一些代码,这些代码是由一位不再在公司工作的同事编写的,我发现了以下代码:(我在下面删掉了这些代码) 我不理解第3行和第8行的名称空间命令的用途。 有人能解释一下没有名称的名称空间条目的用途吗? 谢谢,这是一个“匿名名称空间”——它创建了一个隐藏的名称空间,保证每个“翻译单元”(即每个CPP文件)都是唯一的 这实际上意味着该名称空间内的所有项都从编译单元外部隐藏。它们只能在同一文件中使用。另请参见未命名名称空间。有趣。我不知道你能做到。我必须记住这一点。它还揭示了static变量(编译单
有人能解释一下没有名称的名称空间条目的用途吗?
谢谢,这是一个“匿名名称空间”——它创建了一个隐藏的名称空间,保证每个“翻译单元”(即每个CPP文件)都是唯一的
这实际上意味着该名称空间内的所有项都从编译单元外部隐藏。它们只能在同一文件中使用。另请参见未命名名称空间。有趣。我不知道你能做到。我必须记住这一点。它还揭示了
static
变量(编译单元可见性)的需要。static有时仍然很有用。它将使名称没有外部链接,而匿名名称空间将更改名称的链接。嗯,我认为未命名名称空间强制内部链接,但只是查找它,看起来你是对的。真想不到……:)@GregRogers:是的,链接很重要,模板只能用外部链接的对象实例化(例如,尝试在函数内声明一个类并在向量内使用它<>,不起作用,在函数外的未命名命名空间中的类:将起作用…)
namespace NsA { namespace NsB { namespace NsC {
namespace {
class A { /*etc*/ };
class B { /*etc*/ };
}
namespace {
class C { /*etc*/ };
}
} } }