我无法将stdcall函数名“TestFunction”作为参数传递给ExecuteLocalThread并在beginthreadex中使用
unsigned __stdcall TestFunction(void* timerPointer)
{
unsigned result =0;
printf("thread is running\n");
return result;
}
void ExecuteLocalThread(unsigned int (_stdcall *_StartAddress)(void *))
{
HANDLE heartBeatThread;
unsigned int hbThreadID;
heartBeatThread = (HANDLE)_beginthreadex(NULL, 0 , unsigned int (_stdcall *_StartAddress)(void *)/*&TestFunction*/, (void*)this, CREATE_SUSPENDED, &hbThreadID);
ResumeThread( heartBeatThread );
}
答案 0 :(得分:1)
尝试:
heartBeatThread = (HANDLE)_beginthreadex(NULL, 0 , _StartAddress/*&TestFunction*/, (void*)this, CREATE_SUSPENDED, &hbThreadID);
答案 1 :(得分:0)
我强烈建议为函数指针创建一个typedef,并在其他地方使用它:
typedef unsigned int _stdcall (*Pfn)(void*); // typedefs to "Pfn"
void ExecuteLocalThread(Pfn _StartAddress)
{
HANDLE heartBeatThread;
unsigned int hbThreadID;
heartBeatThread = (HANDLE)_beginthreadex(NULL, 0, _StartAddress, (void*)this, CREATE_SUSPENDED, &hbThreadID);
ResumeThread( heartBeatThread );
}
键入更容易,更容易阅读,更难搞乱;)使用它可以更轻松地进行投射:将somePtr
强制转换为函数指针类型:(Pfn)somePtr