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/