-1

我有以下代码:

#include <windows.h>
class systemfunctions
{
    public:
    void (*sleep) (DWORD ms);

    systemfunctions ()
    {
        sleep = reinterpret_cast<void>(Sleep);
    }
} sys;

当我打电话sys.sleep()时,应用程序崩溃。为什么程序会崩溃,我能做些什么来解决这个问题?

4

2 回答 2

2

Windows.h 声明 Sleep() like WINBASEAPI VOID WINAPI Sleep(__in DWORD dwMilliseconds);,尝试告诉编译器它在使用该指针时需要使用正确的调用约定:

typedef VOID (WINAPI * SleepFunction)(DWORD ms);
SleepFunction sleep;

sleep = Sleep;
于 2013-11-01T18:08:49.073 回答
1

唯一应该强制转换函数指针的时候是使用GetProcAddress.

去掉演员表,然后编译器会告诉你哪里出了问题。

于 2013-11-01T18:13:18.700 回答