C에서 함수 포인터를 C로 래핑하는 것이 가능합니까? C#에서 람다를 사용하는 것과 비슷합니다. 나는 데함수 포인터를 일반 C로 래핑하는 방법
실제 문제는 다음과 같습니다
내가 다른 매개 변수 기능의 몇 가지 있습니다
// more than two in actual code
void DoStuff(void) { ... }
void DoOtherStuff(int) { ... }
을 ... 그리고 루프에서 다음을 실행하는 스레드의 몇 가지를 만들려면 :
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++는 내가 람다, 또는 다른 하나를 호출 할 방법에 대한 포인터를 사용합니다,하지만 난 어떻게 수동으로 래퍼 함수를 작성하지 않는 한, C에서이 작업을 수행하는 단서가 없다 :
int CallDoStuff(void *dummy) { DoStuff(); return 0; }
int CallDoOtherStuff(void *dummy) { DoOtherStuff(42); return 0; }
이 단계를 수행하지 않으려면 다른 방법이 있습니까?
아니요. – melpomene