0

次のような関数を宣言しました。

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

progress() コールバックをグローバル変数にして、同じ DLL 内の他の関数で使用するにはどうすればよいですか? 私はC++の初心者です。

4

1 に答える 1

1

一致する署名 (つまり、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

于 2015-10-09T20:45:57.573 に答える