cdecl:c declare(c调用约定)的缩写,是c和c++程序的缺省调用方式,规则是,从右向左的顺序压参数入,由调用者把参数弹出栈,对于传入参数的内存栈是由调用者来维护的,正因为如此,只有这种调用方式可以实现个数不定的入口参数(可变参数),,实现可变参数可以使用VA_LIST,详见博客中其他文章。
stdcall:是pascal程序的缺省调用方式,规则是,按从右向左的顺序入栈,被调用的函数在返回前清理传送参数的内存栈。此方式是MFC的默认方式
上两者的主要区别是前者由调用者清理栈,后者由被调用的函数清理栈。当然函数名的修饰部分也是不同的。
fastcall:采用寄存器传递参数,特点就是快了。
本文详细介绍了C调用约定的概念,包括cdecl、stdcall和fastcall的定义、工作原理及应用场景。重点阐述了这三种调用约定在参数传递、内存栈管理和函数返回值处理上的区别,并通过实例说明如何在实际编程中灵活运用这些约定以提高程序性能。
6117

被折叠的 条评论
为什么被折叠?



