次のような関数を宣言しました。
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
。