只需声明它同样“名”的等效 namespace
!
file1.cpp
namespace Example {
int vartest;
void foo();
}
file2.cpp
namespace Example {
int othervar;
void otherfoo();
}
命名空间合并。
他们有在头文件中声明?
不可以。您可以在namespace
内声明任何namespace
。 (请注意,“全球范围”也是namespace
)
如何在命名空间中声明函数?
只需在namespace
内声明。正如你所做的那样。
并且我们假设我正在处理一个包含不同文件的大型项目。 我定义在文件中的命名空间,但后来想更多 功能添加到同一个命名空间,但这些功能在 另一个文件中定义。可以这样做吗?
合并相同名称空间内同名的命名空间。
namespace X { void foo(){} }
namespace X { void foo(){} } //Error, redefinition of `foo` because the namespace ::X is merged
namespace X { void foo(){} }
namespace Y { void foo(){} } //Ok. Different name spaces...
namespace X { void foo(){} } // ::X
namespace Y { void foo(){} } // ::Y
namespace Y {
namespace X { // namespace ::Y::X here isn't same as ::X
void foo(){} //OK
}
}
召回了所谓的 “全球范围内”,实际上是被称为global namespace
命名空间既然你来自C,你可能会发现匿名命名空间可以替代'static'。 'namespace {bool Ireturntrue(){return true; }}现在很好地被隔离开来,并且在链接时不会增加名称污染。 – user4581301