gpt4 book ai didi

c++ - 指向函数的指针和指向 WINAPI 函数的指针有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 20:48:32 25 4
gpt4 key购买 nike

我遇到了一个代码片段,它检测应用程序是否在 x64 PC 上的 x32 模拟环境中运行 here

通常我理解该代码,但有一件事我不明白:

1) typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);

为什么必须有 WINAPI?为什么知道指针不指向我定义的函数而是指向 WINAPI 函数如此重要?这两个指针会有所不同吗? (以大小、创建位置等方式)

谢谢,

克拉

最佳答案

WINAPI 扩展为 __stdcall(在大多数情况下——您不应该特别依赖该调用约定),这是与默认调用约定不同的调用约定,__cdecl。不同之处在于,在 __stdcall 中,被调用的函数清理堆栈,而在 __cdecl 中,调用者清理堆栈。 __stdcall 不像 __cdecl 那样支持 varadic(可变参数长度)函数,但 __stdcall 在某些情况下可以更快并减少代码大小。

关于c++ - 指向函数的指针和指向 WINAPI 函数的指针有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3074643/

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