您的位置:首页 > 编程语言 > C语言/C++

C/C++项目中调用约定(编译器)的问题

2015-12-27 23:37 323 查看
1、c调用约定

c\c++项目中常用_cdecl修饰符使编译器按照c调用约定:即,函数调用方按照从右到左的顺序将其参数放入栈中,调用完之后调用方负责从栈中清除参数。

2、微软的调用约定

_stdcall,与C调用约定区别仅在于:调用完之后被调用者清除栈中的参数。(因此,参数可变函数不能使用这种调用约定。如,printf),其优点在于,每次函数调用不用通过代码清除栈上的参数,因此能够生成体积较小、运行较快的程序。

3、fastcall约定

类似于_stdcall调用约定,区别在于:它会向CPU寄存器最多传送2个参数。(将函数的前两个参数传送给ecx和edx)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: