C语言
函数 |
1、void __CALLTYPE f(); 2、int __CALLTYPE f(); 3、int __CALLTYPE f(int); 4、double __CALLTYPE f(int, double); 5、int* __CALLTYPE f(int*, char*);
|
__cdecl |
1、_f 2、_f 3、_f 4、_f 5、_f 仅仅在函数名前加一个下划线,至于函数返回值、参数,完全没有处理
|
__stdcall |
1、_f@0 2、_f@0 3、_f@4 4、_f@12 5、_f@8 在函数名前加一个下划线,然后紧跟“@”符号,最后是函数参数大小总和(注意:此总和包含了字节填充)
|
__fastcall |
1、@f@0 2、@f@0 3、@f@4 4、@f@12 5、@f@8 跟 __stdcall 唯一不同的是,函数前面的下划线变为了“@”符号
|
C++语言
函数 |
1、void __CALLTYPE f(); 2、int __CALLTYPE f(); 3、int __CALLTYPE f(int); 4、double __CALLTYPE f(int, double); 5、int* __CALLTYPE f(int*, char*);
|
__cdecl |
1、?f@@YAXXZ 2、?f@@YAHXZ 3、?f@@YAHH@Z 4、?f@@YANHN@Z 5、?f@@YAPAHPAHPAD@Z 6、?f@ABCD@@QAAHXZ 7、??$f@H@@YAHH@Z
|
规则 | “?”表示一个函数的开始,用以区别于 C 语言的“_”,f 为函数名称,“@@YA”表示函数调用约定为 __cdecl,最后末位的两位:X表示函数没有参数, 也就是void, Z是结束标识. 如果函数参数不为空时, 会以@Z结束。 |
转载于:https://www.cnblogs.com/tinaluo/p/5357681.html