[转]__cdecl与__stdcall

时间:2023-03-09 04:11:43
[转]__cdecl与__stdcall

来自Programming Windows 5th Edition

The WinMain function is given a type of WINAPI (as is every Windows function call defined in the header files), and the WndProc function is
given a type of CALLBACK. Both these identifiers are defined as __stdcall , which refers to a special calling sequence for function calls that occur between Windows itself and your application.

-------------------------------------

原文链接:http://www.cnblogs.com/sober/archive/2009/09/01/1558178.html

我觉得评论里面有几句比较有价值:

不用它们也是没问题的,除非你用C++做的DLL要导出,并提供给Pascal,c调用

另外、

这属于调用约定,主要是不同调用约定产生的目标机器码略有差异。
调用方和被调用方(函数提供方)需要使用相同的调用约定;

调用约定主要包含这么几个内容:

(1)又哪一方负责复原栈;
(2)参数传递方式;例如__fastcall使用内部寄存器ECX,EDX传递前两个DWORD 或者size更小的参数;所以速度更快;