関数ポインタをCでラップすることは可能ですか?C#でラムダを使用する場合と同様です。私が午前関数ポインタをCでラップする方法
実際の問題は、次のとおりです。
私は異なるパラメータを持つ関数のカップルを持っている:
// more than two in actual code
void DoStuff(void) { ... }
void DoOtherStuff(int) { ... }
...と私はループ内でこれらを実行するスレッドのカップルを作成したいです:C#の/ Cで
// this won't work because it expects a LPTHREAD_START_ROUTINE,
// which is int(*fn)(void*)
tHnd1 = CreateThread(NULL, 0, &DoStuff, NULL, 0, &tId);
tHnd2 = CreateThread(NULL, 0, &DoOtherStuff, NULL, 0, &tId);
++私は、ラムダ、または他のものを呼ぶだろうメソッドへのポインタを使用しますが、私は手動でラッパー関数を作成しない限り、Cでこれを行う方法を見当もつかない。
int CallDoStuff(void *dummy) { DoStuff(); return 0; }
int CallDoOtherStuff(void *dummy) { DoOtherStuff(42); return 0; }
この手順を実行する他の方法はありますか?
いいえ、本当にありません。 – melpomene