调用规约

2019-01-02  本文已影响0人  玻璃缸里的自游

stdcall,cdecl,fastcall,thiscall,naked call

1、stdcall的调用约定意味着:1)参数从右向左压入堆栈,2)函数自身修改堆栈 3)函数名自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸。

2、cdecl调用约定是C语言缺省的调用约定。其参数压栈顺序是和stdcall是一样的,从右向左压入堆栈。不同的是,函数本身不清理堆栈,而由调用者负责清理堆栈。

3、VC++开发环境中,默认的编译选项是C语言缺省的_cdecl。如果要使用stdcall,必须显示声明。如:Win32的API函数都遵循_stdcall调用约定,可声明为WINAPI,这就是stdcall。

4、c++对象函数默认使用thiscall. this指针通常由寄存器ECX传递。

上一篇下一篇

猜你喜欢

热点阅读