应用程序崩溃,指向函数的指针是可疑的

时间:2013-11-01 17:52:20

标签: c++ casting reinterpret-cast

我有以下代码:

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

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

当我致电sys.sleep()时,应用程序崩溃了。为什么程序崩溃,我该怎么做才能解决问题?

2 个答案:

答案 0 :(得分:2)

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

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

sleep = Sleep;

答案 1 :(得分:1)

使用GetProcAddress的返回值时,唯一应该转换函数指针的时间。

摆脱演员表,然后编译器会告诉你出了什么问题。