是否有可能以某种方式在 C 中“包装”一个函数指针,类似于在 C# 中对 lambda 执行的操作?
我遇到的实际问题是:
我有几个具有不同参数的函数:
// more than two in actual code
void DoStuff(void) { ... }
void DoOtherStuff(int) { ... }
...我想创建几个线程来循环运行它们:
// 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#/C++ 中,我会使用 lambda,或指向将调用另一个方法的方法的指针,但我不知道如何在 C 中执行此操作,除非我手动创建包装函数:
int CallDoStuff(void *dummy) { DoStuff(); return 0; }
int CallDoOtherStuff(void *dummy) { DoOtherStuff(42); return 0; }
有没有其他方法可以避免执行此步骤?