由于一些静态数据,我有一个函数
void foo(MyNamespace::bar)
定义在某个编译单元中。但是它的使用点是在另一个编译单元中。所以我用
namespace MyNamespace
{
extern void foo(bar);
}
但是链接器找不到函数定义。我是否滥用了 extern
?
最佳答案
extern
可以用于这种事情。
你的问题是链接器需要一个函数 MyNamespace::foo(bar);
因为你的 extern
语句在 MyNamespace
.
你有两个选择:
在您的“使用点”使用
extern void foo(MyNamespace::bar);
。不要将该行包含在MyNamespace
中。或者,将函数定义包含在
MyNamespace
中。
关于c++ - 使用 extern 引用在不同编译单元中定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27169379/