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'。 –