gpt4 book ai didi

c++ - 如何使回调全局化以便我可以将它用于其他函数?

转载 作者:行者123 更新时间:2023-11-28 06:02:12 25 4
gpt4 key购买 nike

我声明了这样一个函数:

int __stdcall DoSomething(int &inputSize, int &outputSize, void(* __stdcall progress)(int) )
{
}

如何使 progress() 回调成为一个全局变量,以便在同一个 DLL 中的其他函数中使用它?我是 C++ 的新手。

最佳答案

创建一个具有匹配签名的函数(即 void (*)(int))。

#include <iostream>

//void ( * )( int ) - same signature as the function callback
void progressHandler(int progress)
{
std::cout << "received progress: " << progress << std::endl;
}

int DoSomething(int &inputSize, int &outputSize, void (*progress)(int))
{
progress(100);
return 0;
}

int main()
{
int inputSize = 3;
int outputSize = 3;
DoSomething(inputSize, outputSize, progressHandler);

return 0;
}

输出:

received progress: 100

即使我删除了它(因为我使用了 g++),您也可以保留 __stdcall

关于c++ - 如何使回调全局化以便我可以将它用于其他函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33046755/

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