c++ - 使用 extern 引用在不同编译单元中定义的函数

标签 c++ extern

由于一些静态数据,我有一个函数

void foo(MyNamespace::bar)

定义在某个编译单元中。但是它的使用点是在另一个编译单元中。所以我用

namespace MyNamespace
{
    extern void foo(bar);
}

但是链接器找不到函数定义。我是否滥用了 extern

最佳答案

extern 可以用于这种事情。

你的问题是链接器需要一个函数 MyNamespace::foo(bar); 因为你的 extern 语句在 MyNamespace.

你有两个选择:

  1. 在您的“使用点”使用 extern void foo(MyNamespace::bar);。不要将该行包含在 MyNamespace 中。

  2. 或者,将函数定义包含在 MyNamespace 中。

关于c++ - 使用 extern 引用在不同编译单元中定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27169379/

相关文章:

c++ - 具有对象作为属性的类的错误c++

c++ - 为什么 malloc 不返回?

c - 两个源文件中的变量

c++ - 对象没有在应该创建的时候创建

作为 C 回调的 C++ 静态成员函数需要访问非静态引用

创建静态全局的多个实例/副本

java - 迭代性能 Java 与 C++

c++ - 此代码是否应引起警告

c++ - 条件变量声明

c++ - 在 C++ 中使用 Extern 变量进行编译