C名称修饰规则
1.对于使用__cdecl调用约定的函数,在函数名称前加一下划线,不考虑参数和返回值。
2.对于使用__fastcall调用约定的函数,在函数名称前后各加一@符号,后跟参数的长度,不考虑返回值。
例如 extern “C” int __fastcall Test(int n)的修饰名称为@Test@4.
3.对于使用 __stdcall 标准调用约定的函数,在函数名称前加一下划线,名称后加一@符号,后跟参数的长度,不考虑返回值。
例如 extern “C” int __stdcall Test(int n,int m)的修饰名称为 _Test@8
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
C++名称修饰组成部分
- 问号前缀
- 函数名称或不包括类名的方法名称。构造函数和析构函数具有特别的民称,分别为?0和?1。运算符重载也具有特别的名称,例如new ,delete ,= , +和++的名称分别为?2, ?3, ?4, ?H和?E,我们把这些特别的函数名称简称为特殊函数名。
- 如果不是特殊函数名,那么加一个分隔符@
- 如果是类的方法,那么由所属类开始依次加上类名和父类名,每个类名后面跟一个@符号,所有类名加好后,再加上一个@符号和字符Q或者S(静态方法)。如果不是类的方法,那么直接加上@符号和字符Y.
- 调用约定代码。对于不属于任何类的函数,C调用约定(__cdecl)的代码为A,__fastcall约定的代码为I,__stdcall 的代码为G,对于类方法,调用约定前会加一个字符A,this调用的代码为E.
- 返回值编码。 例如字符H代表整数类型的返回值
- 参数列表编码,以@符号结束。
- 后缀Z。
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
https://msdn.microsoft.com/zh-cn/library/vstudio/46t77ak2(v=vs.110).aspx
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
区别:
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
http://www.xuebuyuan.com/1523077.html
http://baike.baidu.com/item/__stdcall
http://www.haodaima.net/art/769201