gpt4 book ai didi

c++ - 如何使 void** 指向一个函数?

转载 作者:太空宇宙 更新时间:2023-11-04 15:53:44 28 4
gpt4 key购买 nike

我有这样的代码:

extern "C" __declspec(dllexport)  myInterface(int id, void** pFunction)
{
...
}

我需要使 void** pFunction 参数指向一个函数,以便调用者可以通过 pFunction 指针使用该函数。这个函数是通过 DLL 调用的,我不想这样做,但出于很多原因我别无选择。我知道 COM 是为此而生的,但我不能使用它,原因归结为管理。

在这一点上,我不知道该怎么做,我尝试做的每件事都给我带来了问题。有谁知道我该怎么做?如果不清楚,我可以发布更多内容。

谢谢。

最佳答案

如果您正在查看“myInterface”的实现,那么您可能想要:

switch (id)
{
case FUNC_1:
*pFunction = (void *)first_function;
break;
...
}

如果您尝试调用该函数并传入指向该函数的指针,则:

void *vp = (void *)the_function_to_pass;
myInterface(1, &vp);

如果您还有其他想法,则需要具体说明。

(请注意,严格来说,C 不保证函数指针可以分配给对象指针,反之亦然。但是,POSIX 确实为您提供了这种保证。我相信类似的评论也适用于 C++。)

关于c++ - 如何使 void** 指向一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3268890/

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