我有以下代码:
#include <windows.h>
class systemfunctions
{
public:
void (*sleep) (DWORD ms);
systemfunctions ()
{
sleep = reinterpret_cast<void>(Sleep);
}
} sys;
当我打电话sys.sleep()
时,应用程序崩溃。为什么程序会崩溃,我能做些什么来解决这个问题?
我有以下代码:
#include <windows.h>
class systemfunctions
{
public:
void (*sleep) (DWORD ms);
systemfunctions ()
{
sleep = reinterpret_cast<void>(Sleep);
}
} sys;
当我打电话sys.sleep()
时,应用程序崩溃。为什么程序会崩溃,我能做些什么来解决这个问题?
Windows.h 声明 Sleep() like WINBASEAPI VOID WINAPI Sleep(__in DWORD dwMilliseconds);
,尝试告诉编译器它在使用该指针时需要使用正确的调用约定:
typedef VOID (WINAPI * SleepFunction)(DWORD ms);
SleepFunction sleep;
sleep = Sleep;
唯一应该强制转换函数指针的时候是使用GetProcAddress
.
去掉演员表,然后编译器会告诉你哪里出了问题。