调用惯例影响执行效率,参数的传递方式以及栈清除的方式。
调用惯例 | 参数传递顺序 | 谁负责清除参数 | 参数是否使用暂存器 |
register | 从左到右 | 被调用者 | 是 |
pascal | 从左到右 | 被调用者 | 否 |
cdecl | 从右到左 | 调用者 | 否 |
stdcall | 从右到左 | 被调用者 | 否 |
safecall | 从右到左 | 被调用者 | 否 |
fastcall |
头两个DWORD(4字节)类型或者占更少 字节的参数被放入寄存器,其它剩下的参数 按从右至左的顺序压入栈 |
被调用者 | 否 |
WINAPI |
在WINDEF.H中定义:#define WINAPI _stdcall |
Dekphi 默认的调用惯例是:register
win32API 默认的调用惯例是:pascal、stdcall、safecall
c语言 默认的调用惯例:cdecl stdcall fastcall