Question

I have the following code:

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

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

When I call sys.sleep(), the application crashes. Why does the program crash, and what can I do to resolve the problem?

Était-ce utile?

La solution

Windows.h declares Sleep() like WINBASEAPI VOID WINAPI Sleep(__in DWORD dwMilliseconds);, try telling the compiler it needs to use the proper calling convention when it uses that pointer:

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

sleep = Sleep;

Autres conseils

The only time you should cast a function pointer is when using the return value from GetProcAddress.

Get rid of the cast, and then the compiler will tell you what is wrong.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top