只需聲明它同樣「名」的等效 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