由于一些静态数据,我有一个功能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/