C++名称粉碎

C++ name mangling 
1: ?0: 构造器,?1 析构器
2:  @@QAE: public __thiscall
    @@AAE: private __thiscall
    @@QBE: public __thiscall const 
3: 返回值和参数类型
    B:const
    D:char
    E:unsigned char
    F:short
    G:unsigned short
    H:int
    I:unsigned int
    J:long
    K:unsigned long
    M:float
    N:double
    _N:bool
    PA:指针(*,后面的代号表明指针类型,如果相同类型的指针连续出现,以0代替,一个0代表一次重复)
    PB:const指针
    AA:引用(&)
    AB:const引用
    U:类或结构体
    V:Interface(接口)
    W4:enum
    X:void
    Z: 结尾标记
    @: 空,无得意思,构造或析构使用,与?0, ?1配合
--------------------------------------------------------------------------------
实例:熟读唐诗三百首,不拍你不会做诗,自己体会吧,如果你愿意。
--------------------------------------------------------------------------------
?0CritSec@@QAE@XZ (public: __thiscall CritSec::CritSec(void))
?0Tick@@QAE@K@Z (public: __thiscall Tick::Tick(unsigned long))
?1CritSec@@QAE@XZ (public: __thiscall CritSec::~CritSec(void))
?0CFontSet@@QAE@XZ (public: __thiscall CFontSet::CFontSet(void))
?0Dx2DDraw@@QAE@XZ (public: __thiscall Dx2DDraw::Dx2DDraw(void))
?1AutoLock@@QAE@XZ (public: __thiscall AutoLock::~AutoLock(void))
?1CD3DDraw@@QAE@XZ (public: __thiscall CD3DDraw::~CD3DDraw(void))
?1CFontSet@@QAE@XZ (public: __thiscall CFontSet::~CFontSet(void))
?1Dx2DDraw@@QAE@XZ (public: __thiscall Dx2DDraw::~Dx2DDraw(void))
Lock@CritSec@@QAEXXZ (public: void __thiscall CritSec::Lock(void))
?0D3dDrawCmd@@QAE@XZ (public: __thiscall D3dDrawCmd::D3dDrawCmd(void))
?0ImgTexture@@QAE@XZ (public: __thiscall ImgTexture::ImgTexture(void))
Unlock@CritSec@@QAEXXZ (public: void __thiscall CritSec::Unlock(void))
?1ImgTexture@@QAE@XZ (public: __thiscall ImgTexture::~ImgTexture(void))
TryLock@CritSec@@QAEHXZ (public: int __thiscall CritSec::TryLock(void))
DelFont@CFontSet@@QAEHH@Z (public: int __thiscall CFontSet::DelFont(int))
TryLock@AutoLock@@QAEHXZ (public: int __thiscall AutoLock::TryLock(void))
Refresh@CD3DDraw@@QAEJXZ (public: long __thiscall CD3DDraw::Refresh(void))
?0ResImageList@@QAE@XZ (public: __thiscall ResImageList::ResImageList(void))
?0simplethread@@QAE@XZ (public: __thiscall simplethread::simplethread(void))
?BTick@@QBEKXZ (public: __thiscall Tick::operator unsigned long(void)const )
stop@simplethread@@QAEXXZ (public: void __thiscall simplethread::stop(void))
?1ResImageList@@QAE@XZ (public: __thiscall ResImageList::~ResImageList(void))
?1simplethread@@QAE@XZ (public: __thiscall simplethread::~simplethread(void))
pass@Tick@@QBE?AU1@XZ (public: struct Tick __thiscall Tick::pass(void)const )
?0CD3DDrawLayer@@QAE@XZ (public: __thiscall CD3DDrawLayer::CD3DDrawLayer(void))
?0D3dDrawCmdSet@@QAE@XZ (public: __thiscall D3dDrawCmdSet::D3dDrawCmdSet(void))
RenderAll@CD3DDraw@@AAEJXZ (private: long __thiscall CD3DDraw::RenderAll(void))
Visible@CAllocator@@QAE_NXZ (public: bool __thiscall CAllocator::Visible(void))
?1D3dDrawCmdSet@@QAE@XZ (public: __thiscall D3dDrawCmdSet::~D3dDrawCmdSet(void))
ClearVideo@CD3DDraw@@QAEXXZ (public: void __thiscall CD3DDraw::ClearVideo(void))
TestDevice@CD3DDraw@@QAEJXZ (public: long __thiscall CD3DDraw::TestDevice(void))
clear@D3dDrawCmdSet@@QAEXXZ (public: void __thiscall D3dDrawCmdSet::clear(void))
EndPaint@CD3DDraw@@QAEJPAX@Z (public: long __thiscall CD3DDraw::EndPaint(void *))
getSize@ResImageList@@QAEHXZ (public: int __thiscall ResImageList::getSize(void))
CheckDevice@CD3DDraw@@AAEJXZ (private: long __thiscall CD3DDraw::CheckDevice(void))
ClearDraw@CD3DDraw@@QAEJPAX@Z (public: long __thiscall CD3DDraw::ClearDraw(void *))
ResetDevice@CD3DDraw@@AAEJXZ (private: long __thiscall CD3DDraw::ResetDevice(void))
SetD3DState@CD3DDraw@@AAEJXZ (private: long __thiscall CD3DDraw::SetD3DState(void))
Visible@CD3DDrawLayer@@QAEHXZ (public: int __thiscall CD3DDrawLayer::Visible(void))
OnLostDevice@CFontSet@@QAEJXZ (public: long __thiscall CFontSet::OnLostDevice(void))
Popfront@ResImageList@@QAEXXZ (public: void __thiscall ResImageList::Popfront(void))
CreateDevice@CD3DDraw@@AAEJXZ (private: long __thiscall CD3DDraw::CreateDevice(void))
OnLostDevice@CD3DDraw@@AAEXXZ (private: void __thiscall CD3DDraw::OnLostDevice(void))
RenderCursor@CD3DDraw@@AAEJXZ (private: long __thiscall CD3DDraw::RenderCursor(void))
?1ImgTextureGeter@@QAE@XZ (public: __thiscall ImgTextureGeter::~ImgTextureGeter(void))
ClearCanvas@CD3DCanvas@@QAEJXZ (public: long __thiscall CD3DCanvas::ClearCanvas(void))
FontUninstall@CD3DDraw@@QAEXH@Z (public: void __thiscall CD3DDraw::FontUninstall(int))
OnResetDevice@CFontSet@@QAEJXZ (public: long __thiscall CFontSet::OnResetDevice(void))
ResetD3Device@CD3DDraw@@QAEJXZ (public: long __thiscall CD3DDraw::ResetD3Device(void))
OnResetDevice@CD3DDraw@@AAEJXZ (private: long __thiscall CD3DDraw::OnResetDevice(void))
PresentCanvas@CD3DDraw@@AAEXXZ (private: void __thiscall CD3DDraw::PresentCanvas(void))
SetSysRatio@CD3DDraw@@QAEJHH@Z (public: long __thiscall CD3DDraw::SetSysRatio(int,int))
AddFont@CFontSet@@QAEHHHPAD@Z (public: int __thiscall CFontSet::AddFont(int,int,char *))
OnLostDevice@CAllocator@@QAEJXZ (public: long __thiscall CAllocator::OnLostDevice(void))
OnLostDevice@ImgTexture@@QAEJXZ (public: long __thiscall ImgTexture::OnLostDevice(void))
SetFullScreen@CD3DDraw@@QAEJ_N@Z (public: long __thiscall CD3DDraw::SetFullScreen(bool))
getFront@ResImageList@@QAEPADXZ (public: char * __thiscall ResImageList::getFront(void))
CleanSurface@CD3DDraw@@QAEJPAX@Z (public: long __thiscall CD3DDraw::CleanSurface(void *))
RecreateDevice@CD3DDraw@@AAEJXZ (private: long __thiscall CD3DDraw::RecreateDevice(void))
check_stop@simplethread@@QAE_NXZ (public: bool __thiscall simplethread::check_stop(void))
is_running@simplethread@@QAE_NXZ (public: bool __thiscall simplethread::is_running(void))
OnResetDevice@CAllocator@@QAEJXZ (public: long __thiscall CAllocator::OnResetDevice(void))
OnResetDevice@ImgTexture@@QAEJXZ (public: long __thiscall ImgTexture::OnResetDevice(void))
SetCursorEnable@CD3DDraw@@QAEXH@Z (public: void __thiscall CD3DDraw::SetCursorEnable(int))
DrawLineH@CD3DCanvas@@QAEJHHH@Z (public: long __thiscall CD3DCanvas::DrawLineH(int,int,int))
DrawLineV@CD3DCanvas@@QAEJHHH@Z (public: long __thiscall CD3DCanvas::DrawLineV(int,int,int))
get_canvasWidth@CD3DCanvas@@QAEHXZ (public: int __thiscall CD3DCanvas::get_canvasWidth(void))
AllocatorVisible@CD3DDraw@@AAE_NXZ (private: bool __thiscall CD3DDraw::AllocatorVisible(void))
BeginPaint@CD3DDraw@@QAEPAXK@Z (public: void * __thiscall CD3DDraw::BeginPaint(unsigned long))
TextWidth@CFontSet@@QAEJHPBD@Z (public: long __thiscall CFontSet::TextWidth(int,char const *))
count@D3dDrawCmdSet@@QBEIXZ (public: unsigned int __thiscall D3dDrawCmdSet::count(void)const )
get_arglist@simplethread@@QAEPAXXZ (public: void * __thiscall simplethread::get_arglist(void))
set_bColor@CD3DCanvas@@QAEXK@Z (public: void __thiscall CD3DCanvas::set_bColor(unsigned long))
set_fColor@CD3DCanvas@@QAEXK@Z (public: void __thiscall CD3DCanvas::set_fColor(unsigned long))
Pushback@ResImageList@@QAEXPBD@Z (public: void __thiscall ResImageList::Pushback(char const *))
get_canvasHeight@CD3DCanvas@@QAEHXZ (public: int __thiscall CD3DCanvas::get_canvasHeight(void))
?0CD3DDraw@@QAE@PAUHWND__@@AAJ@Z (public: __thiscall CD3DDraw::CD3DDraw(struct HWND__ *,long &))
SetVideoRenderMode@CD3DDraw@@QAEXH@Z (public: void __thiscall CD3DDraw::SetVideoRenderMode(int))
?0AutoLock@@QAE@PAVCritSec@@HH@Z (public: __thiscall AutoLock::AutoLock(class CritSec *,int,int))
FontInstall@CD3DDraw@@QAEXHHPAD@Z (public: void __thiscall CD3DDraw::FontInstall(int,int,char *))
DrawLineH@CD3DDraw@@QAEJPAXHHH@Z (public: long __thiscall CD3DDraw::DrawLineH(void *,int,int,int))
DrawLineV@CD3DDraw@@QAEJPAXHHH@Z (public: long __thiscall CD3DDraw::DrawLineV(void *,int,int,int))
GetItem@CFontSet@@QAEPAUDrawFont@@H@Z (public: struct DrawFont * __thiscall CFontSet::GetItem(int))
DrawRect@CD3DCanvas@@QAEJUtagRECT@@@Z (public: long __thiscall CD3DCanvas::DrawRect(struct tagRECT))
FillRect@CD3DCanvas@@QAEJUtagRECT@@@Z (public: long __thiscall CD3DCanvas::FillRect(struct tagRECT))
SetResolutionRatio@CD3DDraw@@QAEJHH@Z (public: long __thiscall CD3DDraw::SetResolutionRatio(int,int))
FontTextWidth@CD3DDraw@@QAEJHPBD@Z (public: long __thiscall CD3DDraw::FontTextWidth(int,char const *))
LoadResImage@CD3DDraw@@QAEJPAXPBD@Z (public: long __thiscall CD3DDraw::LoadResImage(void *,char const *))
DrawRect@CD3DDraw@@QAEJPAXUtagRECT@@@Z (public: long __thiscall CD3DDraw::DrawRect(void *,struct tagRECT))
FillRect@CD3DDraw@@QAEJPAXUtagRECT@@@Z (public: long __thiscall CD3DDraw::FillRect(void *,struct tagRECT))
OnLostDevice@CDoubleBufferCanvas@@QAEJXZ (public: long __thiscall CDoubleBufferCanvas::OnLostDevice(void))
SetClipRect@Dx2DDraw@@QAEXPAUtagRECT@@@Z (public: void __thiscall Dx2DDraw::SetClipRect(struct tagRECT *))
GetResolutionRatio@CD3DDraw@@QAEJPAH0@Z (public: long __thiscall CD3DDraw::GetResolutionRatio(int *,int *))
sync_to@D3dDrawCmdSet@@QAEXAAU1@@Z (public: void __thiscall D3dDrawCmdSet::sync_to(struct D3dDrawCmdSet &))
?8D3dDrawCmd@@QBE_NABU0@@Z (public: bool __thiscall D3dDrawCmd::operator==(struct D3dDrawCmd const &)const )
?9D3dDrawCmd@@QBE_NABU0@@Z (public: bool __thiscall D3dDrawCmd::operator!=(struct D3dDrawCmd const &)const )
OnResetDevice@CDoubleBufferCanvas@@QAEJXZ (public: long __thiscall CDoubleBufferCanvas::OnResetDevice(void))
SetVideoRect@CD3DDraw@@QAEXPAUtagRECT@@@Z (public: void __thiscall CD3DDraw::SetVideoRect(struct tagRECT *))
set_clipRect@CD3DCanvas@@QAEXUtagRECT@@@Z (public: void __thiscall CD3DCanvas::set_clipRect(struct tagRECT))
Render@CD3DDraw@@AAEJPAUCD3DDrawLayer@@@Z (private: long __thiscall CD3DDraw::Render(struct CD3DDrawLayer *))
--------------------------------------------------------------------------------
当函数使用__cdecl调用约定时,编译器进行以下工作:
 
1.以?标识函数名的开始,后跟函数名函数名后面以@@YA标识开始,后跟返回值和参数表;
5、当函数返回值为某个类或带有const性质的类的时候,返回值的命名为:?A/?B+V+类名+@@(不带加号)。
   当函数返回值为某个类的指针/引用或者带有const性质的类的指针/引用的时候,返回值的命名为:PA/AA或者PB/AB+V+类名+@@(不带加号);
6、函数参数为某个类的时候,并且该参数所使用的类曾经出现过的话(也就是与函数返回值所使用的类相同或者与前一个参数使用的类相同),
   则该参数类型格式为:V+1+@(不带加号)。如果该参数所使用的类没有出现过的话,则该参数类型格式为:V+类名+@@(不带加号)。函数参数为某个类的指针 /引用或者带有const性质指针/引用的时候,则该参数类型格式是在上述格式的基础上在V前面加上代表指针/引用类型或者带有const性质指针/引用类型的标识符(PA/AA或PB/AB);
7、参数表后以@Z标识整个名字的结束,如果该函数无参数,则以Z标识结束。
 
当函数使用__stdcall调用约定时,编译器所做工作的规则同上面的__cdecl调用约定,只是参数表的开始标识由上面的@@YA变为@@YG。
当函数使用__fastcall调用约定时,编译器所做工作的规则同上面的__cdecl调用约定,只是参数表的开始标识由上面的@@YA变为@@YI。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375279.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一款基于css3鼠标经过圆形旋转特效

今天给大家分享一款基于css3鼠标经过圆形旋转特效。当鼠标经过的时候图片边框颜色旋转,图片显示详情。该实例适用浏览器:IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗。效果图如下: 在线预览 源码下载 实现的代码。 ht…

Delphi与Windows 7下的用户账户控制(UAC)机制

WIN7/WIN8/WIN10, Vista提供的UAC机制,它的主要目的是防止对于操作系统本身的恶意修改。 对于Delphi程序的影响,UAC主要在于以下几点: 1、由于UAC机制,Delphi对于系统的操作可能无声的失败,而同样的程序,在…

[转]深入理解Java 8 Lambda(类库篇——Streams API,Collectors和并行)

以下内容转自: 作者:Lucida 微博:peng_gong 豆瓣:figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-library-features 本文谢绝转载,如需转载需征得作者本人同意,谢谢。 --…

Eclipse生成jar包

前言: 本宅因为要写XXX软件的一个插件,来用用java,接触3天后 在打jar包上卡住了..... 经过大量的百度搜索后有如下几种解决方案: 解决方案: 一.安装Fatjar 在线安装地址:http://kurucz-grafika.de/fatjar 悲剧的是我怎么也安装不上去,于是放弃(在线下载包什么 我的Eclipse版…

Buffer和Cache的区别

现在不都是只有page cache了吗? buffer pages其实也是page cache里面的页。只是多了一层抽象,通过buffer_head来进行一些访问管理对,从Linux算法实现的角度,page cache和buffer cache目前是一样的,但是从功能抽象和具体应用来讲&a…

Android刷机

这里也有一篇比较详细的 http://blog.csdn.net/qq1084283172/article/details/52334452 官网刷机包 https://developers.google.com/android/images#hammerhead 我的机器是Nexus 5 一. 安装驱动 如何进入fastboot模式 1. 拔掉数据线,将手机关机 2. 关机后同时按…

中西医与算法之间的联系

中西医的特点网上有非常多讨论,概括起来就是西医治病,中医不治病 这个观点有部分道理,但不全对 中医落后的原因有非常多,但假设能用计算机的算法改进一下应该有非常大提升 比方翻译,比方路线规划,比方信号识…

程序的版式

版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要构成因素。可以把程序的版式比喻为“书法”。好的“书法”可让人对程序一目了然,看得兴致勃勃。差的程序“书法”如螃蟹爬行,让人看得索然…

java算法---五家共井

古代数学巨著《九章算数》中有这么一道题叫“五家共井,甲二绠(汲水用的井绳)不足,如(接上)乙一绠;乙三绠不足,如丙一绠; 丙四绠不足,如丁一绠;丁五…

看雪逆向学习导航

---------------------------------------------------------------------------- 工具教程: OllyDbg IDA Windbg GDB 基本方法 参考资料 逆向原理 ----------------------------------------------------------------------------

viewController的生命周期

一、结构 按结构可以对iOS的所有ViewController分成两类: 1、主要用于展示内容的ViewController,这种ViewController主要用于为用户展示内容,并与用户交互,如UITableViewController,UIViewController。 2、用于控制和显…

android123 zhihuibeijing 新闻中心-新闻 页签 ViewPagerIndicator实现

## ViewPagerIndicator ## 使用导入ViewPagerIndicator库的方式相当于可以改源码,打包编译Eclips可以自动完成。ViewPager指针项目,在使用ViewPager的时候能够指示ViewPager所在的位置,就像Google Play中切换的效果一样,还能使用…

java 获取随机数字的三种方法

1 //方法1 (数据类型)2 //(最小值Math.random()*(最大值-最小值1))3 // 例:4 (int)(1Math.random()*(10-11)) //从1到10的int型随数5 6 方法2 获得随机数7 for (int i0;i<30;i)8 {9 System.out.println((int)(1Math.random()*10)); 10 } 11 (int)(1Math.random()*10) 1…

LVS原理及实践(NAT模式)

LVS无论NAT及DR模式&#xff0c;均要求LVS server和real server在同一个网段内&#xff0c;NAT需要把lvs server当作各个realserver的默认网关&#xff0c;DR模式采用修改mac地址直接从数据链路层转发、要求必须在同一个物理网段内 LVS-NAT的实验网络拓扑&#xff1a; 采用青…

基于Maven的spring_security入门

配置文件的修改点没什么变化&#xff0c;可以参考&#xff1a;http://blog.csdn.net/ouitiken/article/details/8830505 pom.xml的依赖参考&#xff1a; <dependencies><!-- Commons --><dependency><groupId>commons-dbcp</groupId><artifac…

使用Vitamio打造自己的Android万能播放器(5)——在线播放(播放优酷视频)

前言 为了保证每周一篇的进度&#xff0c;又由于Vitamio新版本没有发布&#xff0c; 决定推迟本地播放的一些功能&#xff08;截图、视频时间、尺寸等&#xff09;&#xff0c;跳过直接写在线播放部分的章节。从Vitamio的介绍可以看得出&#xff0c;其支持http、m3u8等多种网络…

20个新鲜出炉的网站模板【HTML PSD】

这里给大家分享20 个新鲜出炉的免费网站模板。这些设计元素将成为你下一个项目的重要素材&#xff0c;可以帮你节省很多的时间。与往常一样&#xff0c;我们经常漫游网络&#xff0c;寻找最好的资源&#xff0c; HTML、CSS 和 PSD 等等&#xff0c;记得关注啊。 您可能感兴趣的…

位运算总结(百科)

位运算 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。 位运算 - 定义 在很多系统程序中常要求在位(bit)一级进行运算或处理。&#xff23;语言提供了位运算的功能&#xff0c; 这使得&#xff23;语言也能像汇编语…

归档(转)

如果是自定义类型的归档和解档&#xff0c;是按以下步骤实现如果不是自定义类型&#xff0c;直接第四步就可以。一、创建一个类User二、在User.h中遵循NSCoding协议 #import <Foundation/Foundation.h> interface User : NSObject<NSCoding> { int _userAge;//例子…

相遇

CPU直接识别的唯一语言是机器语言,为了克服机器语言的缺点,便将机器指令用便于记忆、并能描述指令功能的符号来表示称为指令助记符简称助记符 汇编语言由汇编指令,伪指令,和其它符号组成 汇编指令:机器码的助记符,有对应的机器码 伪指令:没有对应的机器码由编译器执行 其它符号…