发布于 2009-08-20 14:08:53
__stdcall是一种调用约定:确定如何将参数传递给函数(在堆栈上或在寄存器中),以及在函数返回后谁负责清理(调用者或被调用者)。
Raymond Chen写了一个blog about the major x86 calling conventions,也有一个很好的CodeProject article。
在大多数情况下,您不应该担心它们。唯一应该这样做的情况是,您调用的库函数使用的不是默认值--否则编译器将生成错误的代码,并且您的程序可能会崩溃。
发布于 2009-08-20 14:08:00
不幸的是,什么时候使用它,什么时候不使用,没有简单的答案。
__stdcall意味着函数的参数从第一个参数到最后一个参数被压入堆栈。这与__cdecl和__fastcall相反,前者意味着参数从最后推送到第一个,后者将前四个(我认为)参数放在寄存器中,其余的放在堆栈中。
你只需要知道被调用者期望什么,或者如果你正在写一个库,你的调用者可能会期望什么,并确保你记录了你选择的约定。
发布于 2009-08-20 14:07:29
它指定了函数的调用约定。调用约定是如何将参数传递给函数的一组规则:按哪个顺序,每个地址或每个副本,谁来清理参数(调用者或被调用者)等。
https://stackoverflow.com/questions/1306414
复制相似问题