gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 16:33:53 26 4
gpt4 key购买 nike

这个类型定义:

typedef DWORD WINAPI
(* CM_Open_DevNode_Key)(DWORD, DWORD, DWORD, DWORD, PHKEY, DWORD);

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

typedef DWORD
(* CM_Open_DevNode_Key)(DWORD, DWORD, DWORD, DWORD, PHKEY, DWORD);

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

更新:我必须从 typedef 中删除“WINAPI”,否则我会得到

 error C2059: syntax error : '('

为线。

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

最佳答案

我相信在 VC++ 上你需要将调用约定放在 () 的 Here's an example 中。关于在函数指针 typedef 中使用调用约定的 MSDN。

typedef DWORD (WINAPI * CM_Open_DevNode_Key)(DWORD, DWORD, DWORD, DWORD, PHKEY, DWORD);

编译应该没有问题。

关于C++:在 MSVC 中使用 __stdcall 回调 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1297059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com