0

我正在从我的代码中的 .SO 'plugin' 文件加载一个函数。该插件将定义 3 个非常具体的功能,每个功能的完整 API 都是提前定义的(重点是允许同一程序的不同实例通过使用不同的插件来修改它们的行为。由于它的使用量,需要速度,以及我一般的懒惰,我决定使用一个静态函数指针,它可以存储插件函数,而不是在各种对象周围传递函数指针。

插件可能不存在,在这种情况下,我想运行本质上是“无操作”功能的功能,而不是从插件中读取的功能。为了一般安全,我想确保静态函数指针指向我的无操作函数。

无论出于何种原因,我似乎无法做到这一点。如果我尝试在 .h 文件中定义无操作函数并将函数指针分配给它,我会在 .h 中定义函数时遇到各种错误。如果我尝试仅在 .h 中声明方法的原型并将函数指针分配给原型,我会得到一个未声明的函数异常,即使该函数是在 .cpp 文件中定义的。

我知道我可以轻松地将函数指针分配给我的 main() 函数中的空操作。但是有没有办法做到这一点,即使我(或以后的某人)没有在我的 main() 方法中正确分配它,指针默认为我的无操作函数的 .H 文件也是如此?

4

1 回答 1

3

标头(例如,PluginInterface.h):

extern void (*my_plugin_function_ptr)(...);

来源(例如,PluginInterface.cpp):

#include "PluginInterface.h"

static void default_plugin_function(...) {/* does nothing */};

void (*my_plugin_function_ptr)(...)=&default_plugin_function;
于 2012-07-12T19:28:13.240 回答