我必须链接两个库,比如A和B.一些文件在两个库中都很常见.所以,我在命名空间中声明库A中的函数,比如说abc.因此,在A和B中,函数func如下所示:
[ in A]
namespace abc {
extern "C" void func();
}
[in B]
extern "C" void func();
Run Code Online (Sandbox Code Playgroud)
在构建项目时,编译器抛出链接错误,说明函数func的多个定义.不是命名空间内的A中的函数func,还是extern"C"函数存在一些问题.如果有,那我怎么能区分它们呢?
我在多个文件中使用单个命名空间,我在开头插入了"namespace abc {",在每个文件末尾插入了"}"(主要除外).因此'#include'位于每个文件的命名空间下.当我编译时,它不起作用(不识别系统函数等).
但是如果我在'#include'行之后定义名称空间,一切正常.这里有什么问题?