gpt4 book ai didi

c++ - 如何为函数指针设置默认函数?

转载 作者:行者123 更新时间:2023-11-28 00:55:44 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

header (例如,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;

关于c++ - 如何为函数指针设置默认函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11459096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com