三个调用约定的区别

本文深入解析了三种主要的调用约定:__cdecl、__stdcall和__fastcall,详细说明了参数的传递方向、栈的清理责任及适用场景。__cdecl适用于C/C++、MFC的默认调用方式,支持可变参数;__stdcall常见于WinAPI中,由被调用方清理栈;而__fastcall则通过寄存器传递前两个参数以提升速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调用约定参数传递方向谁清理栈使用场合修饰函数符号表格式
__cdecl从右向左调用方 C/C++、MFC的默认方式;
可变参数的时候使用
_函数名
__stdcall从右向左被调用方退出函数时清理Win API_函数名@参数名
__fastcall从右向左,
但左边开始的两个不大于4字节(DWORD)的参数分别放在ECX和EDX寄存器,其余的参数自右向左压栈传送
被调用方退出函数时清理要求速度快
(毕竟用了寄存器)
@函数名@参数字节大小

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值