gpt4 book ai didi

c++ - __stdcall 的含义和用法是什么?

转载 作者:IT老高 更新时间:2023-10-28 12:11:31 24 4
gpt4 key购买 nike

我遇到过 __stdcall 这些天很多。

MSDN 并没有很清楚地解释它的真正含义,何时以及为什么应该使用它,如果有的话。

如果有人能提供解释,最好是一两个例子,我将不胜感激。

最佳答案

C/C++ 中的所有函数都有特定的调用约定。调用约定的重​​点是确定如何在调用者和被调用者之间传递数据,以及谁负责清除调用堆栈等操作。

Windows 上最流行的调用约定是

  • __stdcall , 以相反的顺序(从右到左)将参数压入堆栈
  • __cdecl , 以相反的顺序(从右到左)将参数压入堆栈
  • __clrcall , 按顺序(从左到右)将参数加载到 CLR 表达式堆栈中。
  • __fastcall , 存储在寄存器中,然后压入堆栈
  • __thiscall , 压入堆栈;此指针存储在 ECX

  • 将此说明符添加到函数声明实质上是告诉编译器您希望此特定函数具有此特定调用约定。

    调用约定记录在此处
  • https://docs.microsoft.com/en-us/cpp/cpp/calling-conventions

  • Raymond Chen 还从这里开始,就各种调用约定的历史(5 部分)做了一个长系列。
  • https://devblogs.microsoft.com/oldnewthing/20040102-00/?p=41213
  • 关于c++ - __stdcall 的含义和用法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1306414/

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