- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++函数名修饰编码规则-------------------------------2010年8月19日qduwg原创
下面是总结的对C++名字修饰的一些规则,通过大量的实验搞出的。其中需要在VC内写一个小程序,然后通过单步调试,可以看出其编码规则,也
可以使用cl /Fc /c xx.cpp方法编译你的cpp文件,得到一个xx.COD文件,在那里也可以看到修饰后的名字及汇编代码等。当然不了解一点编码
规则,是无法看懂那些类似火星人编码的文字的。故废寝忘食一个多星期,白天晚上的干,才整理出来以下资料,也是自己心血的结晶。聊以抛
砖引玉。
com(int,int)( HYPERLINK mailto:??0comp@@QAE@HH@Z ??0comp@@QAE@HH@Z?复数类构造函数
构造函数为?0,跟作用域comp,结束标志@@,函数访问类型Q,一般函数A常函数用B,调用规则E(this)。参数为2个整数,HH表示。@Z为函数标志
com com(); HYPERLINK mailto:??0comp@@QAE@XZ ??0comp@@QAE@XZ复数类构造函数,无参数。
构造函数为?0,跟作用域comp,结束标志@@,函数访问类型Q,一般函数A常函数用B,调用规则E(this)。无参数用X表示。Z为函数标志,前面没有那
个@号。
c1.add(c2); //c1,c2分别为复数类对象 HYPERLINK mailto:?add@comp@@QAEAAV1@AAV1@@Z ?add@comp@@QAEAAV1@AAV1@@Z)复数类成员函数。?成员函数名add,域名comp,结束标志@@,QAE含义同前,返回值类型AAV1,引用本层类的对象,@分隔符,然后参数AAV1,也是引用本类对象,分
隔符@,函数结束标志@Z。注意此时最后面的@@Z的两个@之间没有数字的。(see below,后面情况有变化)
增加一层名字空间时: HYPERLINK mailto:?add@comp@wang@@QAEAAV12@AAV12@@Z ?add@comp@wang@@QAEAAV12@AAV12@@Z???????? // 如果自定义了名字空间wang,可以看出作用域的变化。
增加二层名字空间时:函数原型comp add(comp a) HYPERLINK mailto:?add@comp@wang@gang@@QAEAAV123@AAV123@@Z ?add@comp@wang@gang@@QAEAAV123@AAV123@@Z?// 如果在自定义名字空间wang外层又定义了一个gang名字空间域,可以看出作用域的变化。
增加二层名字空间时:函数原型comp add(comp a,comp b)??????? //函数参数为多个,且有重复前面的参数的时候。 HYPERLINK mailto:?add@comp@wang@gang@@QAEAAV123@AAV123@0@Z ?add@comp@wang@gang@@QAEAAV123@AAV123@0@Z?//如果增加了多层名字空间,那么在参数的后面就会出现相应的层号1,2,3等,而且在原来的@@Z
的两个@之间增加一个数字0.表示重复前面第0号参数。 如果有不同类型参数,则填入相应代号即可,替换掉数字。参见后面实例描述。
couti; HYPERLINK mailto:??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z
输出整数变量i,函数?6表示符号,后跟所在范围是 HYPERLINK mailto:?$basic_ostream@DU?$char_traits@D@std@@@std ?$basic_ostream@DU?$char_traits@D@std@@@std@@,其中 HYPERLINK mailto:?$basic_ostream@DU ?$basic_ostream@DU表示类型名
及包含的参数,DU分别表示字符类型char和类类型class,后面 HYPERLINK mailto:?$char_traits@D@std ?$char_traits@D@std@@,为第二个参数类类型的具体描述,其中@为参数类型,
std@@为char_traits类所在域,然后是外层类$basic_ostream的范围std@@,然后是QAE,含义同前,接着是返回值类型,AAV是表示对一个对象的
引用,0和1分别表示所引用对象参数,0表示跟前面第0个相同,即@DU
文档评论(0)