我想动态调用 C 函数(例如形成标准库、数学......)。这意味着我的 C 程序只知道指向随机函数的指针(例如printf)及其签名(编码为 char 数组:char *,...)。
我的目标是一个 reflectCall 函数,它获取一个指向函数 ( &printf) 的指针、一个签名(以某种方式编码在 a 中char[]),以及作为 a 的参数long[](long不是实际的数据类型,一个 long 值也可以表示一个 double 值、指针、 ...)。
因此,我的反射函数的签名如下所示:
long reflectCall(void *funcPointer, char[] types, long[] args)
该函数应该执行函数的实际调用*funcPointer并最终返回其结果。
结果,我无法创建指针指针;例如像这样:
int (*functionPtr)(int,int);
谁能给我一个提示如何解决这个问题或建议任何参考实现?