vc环境下三种常见调用方式如下:
_cdecl:C/C++默认的调用方式,调用方平衡栈,不定参数的函数可以使用;
_stdcall:被调用方平衡栈,不定参数的函数无法使用;
_fastcall:寄存器方式传参,被调用方平衡栈,不定参数的函数无法使用。
当参数个数为0,无法区分调用方式,使用_cdecl和_stdcall一样,而大部分是有参数的,_cdecl调用方式的函数在同一个作用域内多次使用,会在效率上面比_stdcall高一点,这是因为_cdecl可以使用复写功能,er_stdcall都在函数内平衡参数,无法使用复写功能。_fastcall调用效率最高,其他两种方式都是通过栈进行传递参数,_fastcall可以通过寄存器传递参数。但由于寄存器数量有限,_fastcall只使用了ecx和edx两个寄存器用来传递第一个参数和第二个参数。