1. 什么是调用约定?
调用约定(Calling conventions)和type representations, 名称修饰(name mangling)同是应用二进制接口(application binary interface ,ABI)概念,理解为C++或其它语言需要遵守的转换为汇编语句的一套规则。
调用约定规定函数参数入栈顺序,和栈清理方式。
2. 调用约定分类?
cdecl、pascal、stdcall、fastcall
区别主要在于入栈顺序(从左到右或从右到左),栈清理方式(调用者清理,被调用者清理,或者根本不做处理)
3.为什么printf必须要用_cdecl调用约定?
_cdecl调用约定是调用者处理参数入栈,出栈
printf是可变参数函数,既然参数个数未知,printf函数体就没办法预知参数个数,然后将所有参数入栈,所以需要用_cdecl
————————————————
版权声明:本文为CSDN博主「Pandaria」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Pandaria/article/details/28896211