如何为函数指针设置默认函数
how to set a default function for a function pointer?
我正在从代码中的.SO‘plugin’文件加载一个函数。该插件将定义3个非常具体的功能,提前定义每个函数的完整API(重点是允许同一程序的不同实例通过使用不同的插件来修改它们的行为。由于它的使用量、对速度的需求以及我的普遍懒惰,我决定使用一个静态函数指针,它可以存储插件函数,而不是将函数指针传递到各种对象周围。
插件可能不存在,在这种情况下,我想运行本质上是"无操作"的函数来代替从插件中读取的函数。为了一般安全起见,我希望确保静态函数指针指向我的no-op函数。
不管出于什么原因,我似乎不能这么做。如果我试图在.h文件中定义no-op函数并将函数指针分配给它,我会在.h中定义函数时遇到各种错误。如果我试图只在.h中声明方法的原型并将函数指示器分配给原型,我会得到一个未声明的函数异常,即使函数是在.cpp文件中定义的。
我知道我可以很容易地将函数指针分配给main()函数中的no-op。但是,有没有一种方法可以做到这一点,即使我(或后来的人)没有在main()方法中正确分配指针,H.文件也会指定指针默认为我的no-op函数?
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;
相关文章:
- 类中的 Arduino 对象构造函数设置垃圾值
- 将复制构造函数设置为private和=delete有什么区别
- 从C++为字符串函数设置_ENV
- 将复制构造函数设置为默认值在继承自 QObject 时不起作用
- 如何将函数设置为变量并从中调用?
- 如何将一个类函数设置为另一个类函数
- (Raspberry Pi 3)如何使用set()函数设置相机属性(来自raspicam/raspicam_cv.h)
- 如何在不更改代码的情况下为所有C++函数设置属性
- 尝试将构造函数设置为 0 - c++ 的未处理异常
- 是否需要为 C++中的一个或多个函数设置类
- C++构造函数设置值
- 将一个对象的函数设置为由arduino库中的另一个对象调用
- 如何使用模板函数设置不同类型的值
- 我可以为并集的C++函数设置默认参数吗
- 如何从成员函数设置类静态数据成员的值
- C++在通过构造函数初始化对象后,用函数设置私有类成员
- 通过C++中的非静态函数设置对C函数指针的回调
- 如何使用 std::bind 将成员函数设置为回调
- 是否可以在不重载的情况下为每个函数设置可变数量的参数
- 通过调用C++函数设置加载器组件