gpt4 book ai didi

带有未知参数的 C 后期绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-04 02:38:08 27 4
gpt4 key购买 nike

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

但是,在运行时我收到的数据让我知道函数的参数,我什至可以将参数存储在 char* 数组中。问题是我没有函数指针模型来将它转换成。

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

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

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

问题是我将不得不创建大约 100 个这样的函数来正确地转换指针。

有没有更有效的方法?

非常感谢!

最佳答案

不幸的是,这是一个没有好的或简单答案的难题。

请参阅之前的 SO 问题:Run-time parameters in gcc (inverse va_args/varargs)

请参阅此 C 常见问题解答:http://c-faq.com/varargs/invvarargs.html

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


附录:请参阅之前的 SO 问题:How to call functions by their pointers passing multiple arguments in C?

...其中提到“libffi”:http://sourceware.org/libffi/

关于带有未知参数的 C 后期绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34885868/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com