繁体   English   中英

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

[英]how to set a default function for a function pointer?

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM