gpt4 book ai didi

c - 什么是 __stdcall?

转载 作者:太空狗 更新时间:2023-10-29 16:14:25 24 4
gpt4 key购买 nike

我正在学习 Win32 编程,WinMain 原型(prototype)如下所示:

int WINAPI WinMain ( HINSTANCE instance, HINSTANCE prev_instance, PSTR cmd_line, int cmd_show )

我对这个 WINAPI 标识符的用途感到困惑并发现:

#define WINAPI      __stdcall

这是做什么的?我对在返回类型之后有一些东西感到困惑。 __stdcall 有什么用?返回类型和函数名之间有什么意思?

最佳答案

__stdcall 是用于该函数的调用约定。这告诉编译器适用于设置堆栈、压入参数和获取返回值的规则。

还有许多其他调用约定,__cdecl__thiscall__fastcall 和奇妙的命名__declspec(naked)__stdcall 是 Win32 系统调用的标准调用约定。

维基百科涵盖了 details .

当您在代码之外调用函数(例如 OS API)或操作系统调用您时(例如 WinMain 的情况),它最重要。如果编译器不知道正确的调用约定,那么您可能会遇到非常奇怪的崩溃,因为无法正确管理堆栈。

关于c - 什么是 __stdcall?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/297654/

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