C后期绑定与未知参数

我目前处于需要调用许多在运行时提取的函数指针的情况下。 问题是参数在编译时是未知的。

但是,在运行时我收到的数据允许我知道函数的参数,我甚至可以将参数存储在char *数组中。 问题是我没有函数指针模型来将其强制转换。

在高级语言中,我知道有像“InvokeMethode(String name,Byte [] args)”这样的函数,它像参数一样解释字节数组。 由于C中不存在reflection,我没有希望用函数指针来看这个。

我想到的一个解决方案(它真的很糟糕)是在编译时创建一个函数指针模型,它将以“硬编码方式”将ptr转换为正确的类型,如下所示:

void callFunc64Bits(void* funcPtr,long long args); void callFuncVoid(void* funcPtr); 

问题是我必须创建像这样的100函数才能正确地转换指针。

有没有办法更有效地做到这一点?

非常感谢你!

不幸的是,这是一个难以解决的好问题。

请参阅此前SO问题: gcc中的运行时参数(反向va_args / varargs)

请参阅此C FAQ问题: http : //c-faq.com/varargs/invvarargs.html

请参阅C FAQ列表维护者的“古怪想法”集合: http : //c-faq.com/varargs/wacky.html


附录:看看这个前SO问题: 如何通过指针在C中传递多个参数来调用函数?

…提到“libffi”: http : //sourceware.org/libffi/