【发布时间】:2013-02-28 16:30:13
【问题描述】:
我想动态调用 C 函数(例如,形成标准库、数学...)。这意味着我的 C 程序只知道指向随机函数的指针(例如 printf)及其签名(编码为 char 数组:char *,...)。
我的目标是获得一个指向函数 (&printf) 的指针、一个签名(以某种方式在 char[] 中编码)以及作为 long[] 的参数(long 不是实际数据类型,一个 long 值也可以表示一个 double 值、指针……)。
因此,我的反射函数的签名如下所示:
long reflectCall(void *funcPointer, char[] types, long[] args)
该函数应该对函数*funcPointer进行实际调用,并最终返回其结果。
因此,我可以不创建指针指针;例如喜欢这个:
int (*functionPtr)(int,int);
谁能给我一个提示如何解决这个问题或建议任何参考实现?
【问题讨论】:
-
平台无关的方式基本上没有办法做到这一点。
-
抱歉,您不能将可变参数传递给可移植的可变参数函数。 C 只是不支持必要的反射。
标签: c function pointers dynamic call