C++:在MSVC中使用__stdcall回调typedef

Geo*_*rge 9 c++ typedef visual-c++

这个typedef:

typedef DWORD WINAPI
(* CM_Open_DevNode_Key)(DWORD, DWORD, DWORD, DWORD, PHKEY, DWORD);
Run Code Online (Sandbox Code Playgroud)

在BorlandCpp中编译很好,但是,当我在msvc中编译它时我必须删除WINAPI(这只是一个别名__stdcall):

typedef DWORD
(* CM_Open_DevNode_Key)(DWORD, DWORD, DWORD, DWORD, PHKEY, DWORD);
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我可以安全地删除WINAPI部分吗?

更新:我必须从typedef中删除"WINAPI",否则我得到了

 error C2059: syntax error : '('
Run Code Online (Sandbox Code Playgroud)

为线.

你能告诉我为什么Borland可以用"WINAPI"编译它而Msvc不能吗?

Mic*_*ael 14

我相信VC++你需要将调用约定放在()中这里是一个在MSDN上使用函数指针typedef中的调用约定的例子.

typedef DWORD (WINAPI * CM_Open_DevNode_Key)(DWORD, DWORD, DWORD, DWORD, PHKEY, DWORD);
Run Code Online (Sandbox Code Playgroud)

这应该编译没有问题.