いくつかの関数呼び出し方式
2477 ワード
__cdecl C Declaration (declaration, ), C : , , 。 , , 。
_stdcall StandardCall , C++ : , , this 。 , retnX,X ,CPU ret X 。 。 , , , , 。
PASCAL Pascal , C/C++ , 。 _stdcall 。
_fastcall 。 , 。 _fastcall ( ) , 。 。 _stdcall 。
_thiscall this 。_thiscall this , 。VC ecx,Borland C++ eax。 _stdcall 。
_fastcall _thiscall , 。 Windows COM _stdcall 。
C _cdecl (C ),C++ , IDE 。
_cdecl , :
int printf(char * fmtStr, ...);
int scanf(char * fmtStr, ...);
*/
__cdecl __fastcall __stdcall, (Calling convention), :1) ,2) ,3) 。
1、__stdcall : , ,
2、_cdecl C C++ 。 , _stdcall 。 。 : , __cdecl 。
3、__fastcall : ( , ECX EDX (DWORD) , , )。
4、thiscall "C++" 。this CX , 。thiscall , 。
5、nakedcall 1-4 , , ESI,EDI,EBX,EBP , 。naked call 。naked call , _declspec 。
1、 (Decoration name):"C" "C++" ( )
2、C :
__stdcall , "@" , _functionname@number, :function(int a, int b), :_function@8
__cdecl , _functionname。
__fastcall "@" , "@" , @functionname@number。
1 __cdecl
2 MS-VC++6.0 , :Setting...\C/C++ \Code Generation , __cdecl。 。
以下から抜粋:
http://baike.baidu.com/view/1280676.htm