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++名称修饰组成部分

  1. 问号前缀
  2. 函数名称或不包括类名的方法名称。构造函数和析构函数具有特别的民称,分别为?0和?1。运算符重载也具有特别的名称,例如new ,delete ,= , +和++的名称分别为?2, ?3, ?4, ?H和?E,我们把这些特别的函数名称简称为特殊函数名。
  3. 如果不是特殊函数名,那么加一个分隔符@
  4. 如果是类的方法,那么由所属类开始依次加上类名和父类名,每个类名后面跟一个@符号,所有类名加好后,再加上一个@符号和字符Q或者S(静态方法)。如果不是类的方法,那么直接加上@符号和字符Y.
  5. 调用约定代码。对于不属于任何类的函数,C调用约定(__cdecl)的代码为A,__fastcall约定的代码为I,__stdcall 的代码为G,对于类方法,调用约定前会加一个字符A,this调用的代码为E.
  6. 返回值编码。 例如字符H代表整数类型的返回值
  7. 参数列表编码,以@符号结束。
  8. 后缀Z。

C++名称修饰组成规律

一:都是以?开始,以字符Z结束,中间由@符号分割为多个部分。整个名称的长度最长为2048个字节。

二:对于类的函数,其基本结构为:?方法名@类名@@调用约定 返回类型 参数列表 Z。

三:对于不属于任何类的函数,其基本结构: ?函数名@@Y调用约定 返回类型 参数列表Z。

例如:

Int __cdecl TestFunc(int ,int ) 修饰名称为?TestFunc@@YAHHH@Z

@Y表明不是类的方法

A代表调用约定 __cdecl

一个H代表返回值为整数类型,后两个H代表两个整型参数

Public int CTest::SetName(char*,…) 修饰名称为 ?SetName@CTest@@QAAHPADZZ

?是前缀

SetSetName是方法名

CTest是类名

@Q表示类名结束

第一个A为C++方法的调用约定前缀,后面的A表示C调用约定(因为声明中包含可变数量参数,所以编译器会自动使用_cdecl)。

H表示返回值类型(整数)

PAD为参数编码,Z是后缀

再例如构造函数

Public : CTest::CTest(void),修饰名称为 ??0CTest@@QAE@XZ

?0 代表构造函数

CTest 表示类名

@Q 表示类名结束

AE 表示this 调用约定

例如运算符重载:

public :void CTest::operator delete (void*)  修饰名称为??3CTest@@SAXPAX@Z

@S表示重载delete 运算符被自动编译成静态方法,重载new 也是如此。

最新文章

  1. 用百度webuploader分片上传大文件
  2. Java poi读取,写入Excel,处理row和cell可能为空的情况
  3. 我的第一个jsp程序-实现注册登录留言功能
  4. 使用EXECUTE IMMEDIATE来生成含有绑定变量的SQL
  5. 深入理解DIP、IoC、DI以及IoC容器(转)
  6. HDU1026 Ignatius and the Princess I
  7. map用法详解
  8. SQL Server 表字段值转换成字段名称(二)
  9. VR行业未来是会走向巅峰还是会归于落寞?
  10. 【JCP模式实战--ferrous-framework】ferrous前端开发框架邀您初体验
  11. mybatis sql循环的使用
  12. 【构造】Bzoj1432[ZJOI2009]Function
  13. UML在代码中的展现
  14. 【Codeforces Round】 #431 (Div. 2) 题解
  15. Spring LazyInitializatoinException
  16. 第三个Sprint冲刺第九天(燃尽图)
  17. 一道hive SQL面试题
  18. Water Tree(树链剖分+dfs时间戳)
  19. POJ 2390
  20. 利用CNN进行多分类的文档分类

热门文章

  1. sql server 小记——分区表
  2. Windows Phone8.1 SDK中的新控件
  3. 如何查看hadoop与hbase的版本匹配关系
  4. c/c++常用代码--udp多播
  5. 前端开发规范之html编码规范
  6. 61.MII、RMII、GMII接口的详细介绍
  7. 46.谈谈SDRAM的作用
  8. homework-07 C++ 11 能好怎
  9. java线程图
  10. xml基础学习笔记04