在不同的C++文件中,未命名的命名空间中的名称不指代相同的命名事物。每个未命名的命名空间是独立的,它们在不同的文件中是不相关的。
例如,假设我们有两个C++文件,文件1.cpp和文件2.cpp。在文件1.cpp中,我们有以下代码:
namespace {
int x = 5;
}
在文件2.cpp中,我们有以下代码:
namespace {
int x = 10;
}
在这种情况下,文件1.cpp和文件2.cpp中的未命名命名空间中的名称"x"指代不同的命名事物。在文件1.cpp中,变量"x"的值是5,在文件2.cpp中,变量"x"的值是10。
要解决这个问题,你可以使用具名的命名空间来确保两个文件中的名称指代相同的命名事物。下面是一个示例:
在文件1.cpp中:
namespace MyNamespace {
int x = 5;
}
在文件2.cpp中:
namespace MyNamespace {
int x = 10;
}
现在,在文件1.cpp和文件2.cpp中,名称"x"指代相同的命名事物,变量"x"的值分别是5和10。这是因为它们都位于具名的命名空间"MyNamespace"中。
下一篇:不同C++向量之间没有线程安全?