C++ 编译器的函数名修饰规则
来源:互联网 发布:excel数据分析直方图 编辑:程序博客网 时间:2024/05/17 03:07
1. C编译器的函数名修饰规则
2. C++编译器的函数名修饰规则
X--void
D--char
E--unsigned char
F--short
H--int
I--unsigned int
J--long
K--unsigned long(DWORD)
M--float
N--double
_N--bool
U--struct
....
指针的方式有些特别,用PA表示指针,用PB表示const类型的指针。后面的代号表明指针类型,如果相同类型的指针连续出现,以“0”代替,一个“0”代表一次重复。U表示结构类型,通常后跟结构体的类型名,用“@@”表示结构类型名的结束。函数的返回值不作特殊处理,它的描述方式和函数参数一样,紧跟着参数表的开始标志,也就是说,函数参数表的第一项实际上是表示函数的返回值类型。参数表后以“@Z”标识整个名字的结束,如果该函数无参数,则以“Z”标识结束。下面举两个例子,假如有以下函数声明:
int Function1 (char *var1,unsigned long);
其函数修饰名为“?Function1@@YGHPADK@Z”,而对于函数声明:
void Function2();
其函数修饰名则为“?Function2@@YGXXZ” 。
class CTest
{
......
private:
protected:
public:
......
};
对于成员函数Function,其函数修饰名为“?Function@CTest@@AAEXH@Z”,字符串“@@AAE”表示这是一个私有函数。成员函数CopyInfo只有一个参数,是对类CTest的const引用参数,其函数修饰名为“?CopyInfo@CTest@@IAEXABV1@@Z”。DrawText是一个比较复杂的函数声明,不仅有字符串参数,还有结构体参数和HDC句柄参数,需要指出的是HDC实际上是一个HDC__结构类型的指针,这个参数的表示就是“PAUHDC__@@”,其完整的函数修饰名为“?DrawText@CTest@@QAEJPAUHDC__@@JPBDUtagRGBQUAD@@E_N@Z”。InsightClass是一个共有的const函数,它的成员函数标识是“@@QBE”,完整的修饰名就是“?InsightClass@CTest@@QBEJK@Z”。
无论是C函数名修饰方式还是C++函数名修饰方式均不改变输出函数名中的字符大小写,这和PASCAL调用约定不同,PASCAL约定输出的函数名无任何修饰且全部大写。
3.查看函数的名字修饰
- C和C++编译器的函数名修饰规则
- C++ 编译器的函数名修饰规则
- C++ 编译器的函数名修饰规则
- C++ 编译器的函数名修饰规则
- C++ 编译器的函数名修饰规则
- C++ 编译器的函数名修饰规则
- C++ 编译器的函数名修饰规则
- C++ 编译器的函数名修饰规则
- 编译器的函数名修饰规则
- C++ 编译器的函数名修饰规则
- C++ 编译器的函数名修饰规则
- C++ 编译器的函数名修饰规则
- 【转载】C++ 编译器的函数名修饰规则
- C++ 缺省参数 重载 C++编译器的函数名修饰规则
- C++函数名的修饰规则
- C/C++ 的函数名修饰规则以及函数调用约定
- 函数名修饰约定规则
- 编译器对C函数的名字修饰
- 资料网站链接收集
- iphone调用系统电话、浏览器、地图、邮件等
- TreeView绑定数据库
- Android深入浅出学习笔记之多线程及异步处理
- 相位裕度
- C++ 编译器的函数名修饰规则
- android 量产软件改动信息(持续更新)
- 数据库中,日期格式装换成字符串格式
- 获取当前时间方法
- TCP/IP协议-篇一
- js技巧搜集
- UIPageControl实现自定义按钮
- 总结:整理 oracle异常错误处理
- 【Java类集】_Iterator接口笔记(实例亲测)