0
代碼編譯沒有錯誤,我想知道什麼是不同的聲明外部函數內部和外部命名空間?調用外部函數而不指定命名空間
--a.h--
namespace mynamespace {
extern void foo();
}
--a.c--
namespace mynamespace {
void foo(){
dosomething;
};
}
有沒有我應該擔心沒有 指定命名空間調用foo()時,任何關注?
#include "a.h"
int main(int argc char *argv)
foo()
}
代替
#include "a.h"
int main(int argc char *argv)
mynamespace::foo();
}
*「在沒有指定命名空間的情況下調用foo()時,我是否應該擔心?」*嘗試一下,你會發現很快。編譯器會告訴你它對你的代碼的看法。 –
@IgorTandetnik奇怪的是,我的編譯器沒有顯示任何警告或錯誤,我在debain上使用gcc-4.9。 –
如圖所示,包含'main'的翻譯單元[無法編譯](http://rextester.com/UQO84160)。如果是這樣,那麼你要麼在全局命名空間中提供'foo'的聲明,要麼在你的代碼中沒有顯示的地方使用'namespace mynamespace'或'using mynamespace :: foo'。 –