c/c++函数调用约定

调用方式

参数传递顺寻

清理堆栈         

支持变长参数           

使用对象

函数名修饰

Name-decoration convention

其他

__cdecl

从右至左

调用者

支持

C/C++默认调用方式

函数名前加下划线如函数main修饰成_main

生成的代码比stdcall大,因为其要求每个函数调用包含清理堆栈的代码

__stdcall

从右至左

被调用者

不支持

Win32 APIdll中导出函数使用

下划线开头,函数名,然后@符号,最后是参数的总byte数。如:int f(int a, double b ),名字为_f@12

 

 

__fastcall

先放入EDXECX中,在从右至左

被调用者

不支持

 

@开头,函数名,然后@符号最后是参数的总byte数,如:@f@12

 

快速传参,即快速调用

thiscall

从右至左,this指针放ECX

被调用者

不支持

C++成员函数专用,用来支持this指针

 

 

本文档根据MSDN整理而成

你可能感兴趣的:(c/c++)