我想动态调用 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);
谁能给我一个提示如何解决这个问题或建议任何参考实现?