C++调用约定

C++调用约定

__cdecl:

全称:C Declaration
参数传递:从右到左
堆栈清理:调用方负责清理堆栈
用途:默认用于C和C++程序,尤其是跨模块调用时。
特性:函数名不会被修饰(mangling),在链接时只使用函数名。
__stdcall:

参数传递:从右到左
堆栈清理:被调用方负责清理堆栈
用途:常用于WinAPI函数调用。
特性:函数名在编译后会被修饰(带有@后缀及参数字节数)。
__fastcall:

参数传递:前两个参数通过寄存器传递(通常是ECX和EDX),其余参数从右到左通过堆栈传递。
堆栈清理:被调用方负责清理堆栈
用途:常用于需要高效调用的函数。
特性:减小了堆栈操作开销,因而效率较高。
__thiscall:

用途:专用于C++类的成员函数。
参数传递:this指针通过ECX寄存器传递,其他参数从右到左通过堆栈传递。
堆栈清理:被调用方负责清理堆栈
__vectorcall:

用途:用于以矢量寄存器(如XMM/YMM寄存器)传递参数,适合需要处理大量浮点运算的函数。
参数传递:矢量类型通过寄存器传递,其他类型通过堆栈传递。
堆栈清理:被调用方负责清理堆栈。
__clrcall:

用途:用于托管代码(C++/CLI)。
特性:使用了托管堆栈,无需显式清理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值