Можно ли «обернуть» указатель на функцию C каким-то образом, подобно тому, что вы сделали бы с лямбдой в C#?Как обернуть указатель функции в plain C
Реальная проблема я имею:
У меня есть несколько функций с различными параметрами:
// 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++ Я хотел бы использовать лямбда, или указатель на метод, который назвал бы другой, но я понятия не имею, как это сделать в C, если я вручную создавать функции оболочки:
int CallDoStuff(void *dummy) { DoStuff(); return 0; }
int CallDoOtherStuff(void *dummy) { DoOtherStuff(42); return 0; }
Есть ли другой способ избежать этого шага?
Нет, не совсем. – melpomene