c/c++目标文件中_ZN****符号是什么意思
2013-11-12 15:11
489 查看
c/c++目标文件中符号生成规则 ,
常看到形如T _Z4funcidcPc等符号而不知这个是什么意思,其实这个是根据对应函数生成的符号名称,其生成规则为:
以_Z开始,如果在命名空间(类中)中的后面加个N,然后是函数名称长度,后面是函数名,后面跟参数类型,如i=int d=double..... 指针 = P
所以下面这个例如可以描述
/*symbol.cpp */
#include <iostream>
void func(int a, double b, char c, char* p){
return;
}
int main(int argc, char** argv){
return 0;
}
g++ -S symbol.cpp 生成汇编symbol.s
g++ -c symbol.s 生成目标symbol.o
执行命令 nm symbol.o | grep func
输出:
0000000000000066 t _GLOBAL__I__Z4funcidcPc
0000000000000000 T _Z4funcidcPc
将func改为
void func(int a, double b, char c, char p){
return;
}
则输出:
0000000000000066 t _GLOBAL__I__Z4funcidcc
0000000000000000 T _Z4funcidcc
验证:
用命令c++filt _Z4funcidcc其输出为:
func(int, double, char, char)
常看到形如T _Z4funcidcPc等符号而不知这个是什么意思,其实这个是根据对应函数生成的符号名称,其生成规则为:
以_Z开始,如果在命名空间(类中)中的后面加个N,然后是函数名称长度,后面是函数名,后面跟参数类型,如i=int d=double..... 指针 = P
所以下面这个例如可以描述
/*symbol.cpp */
#include <iostream>
void func(int a, double b, char c, char* p){
return;
}
int main(int argc, char** argv){
return 0;
}
g++ -S symbol.cpp 生成汇编symbol.s
g++ -c symbol.s 生成目标symbol.o
执行命令 nm symbol.o | grep func
输出:
0000000000000066 t _GLOBAL__I__Z4funcidcPc
0000000000000000 T _Z4funcidcPc
将func改为
void func(int a, double b, char c, char p){
return;
}
则输出:
0000000000000066 t _GLOBAL__I__Z4funcidcc
0000000000000000 T _Z4funcidcc
验证:
用命令c++filt _Z4funcidcc其输出为:
func(int, double, char, char)
相关文章推荐
- SVNsvn文件里有问号,打勾,感叹号,蓝色的十字符号,这些符号分别代表什么意思?SVN里面的AD
- 在makefile文件中,@$符号代表什么意思?
- 在makefile文件中,@$符号代表什么意思?
- 变量语句在makefile文件中,@$符号代表什么意思?
- C++中inline函数的定义为什么要放在头文件中?头文件中“只定义一份”是什么意思?const object 和inline函数是“一次定义规则”
- 编程基础-----c++与c调用so文件/C和C++之间so库的互相调用/GCC -lm 是什么意思
- 在makefile文件中,@$符号代表什么意思?
- 在makefile文件中,@$符号代表什么意思?
- [C/C++]在头文件中使用static定义变量意味着什么
- 自定义标签TLD文件中,rtexprvalue属性是什么意思
- C++中头文件(.h)和源文件(.cpp)都应该写些什么
- C++ 中stdafx.h中文意思,并且在C++中起到的作用是什么?
- xcode中的.h和.m文件分别是什么意思?各有什么用?
- 什么是c语言中的目标文件
- hibernate的配置文件*hbm.xml的class标签的 schema 是什么意思有什么作用?
- C++中使用pthread.h头文件报错 - 无法解析的外部符号 __imp__pthread_create,该符号在函数 _main 中被引用
- C++ 中stdafx.h是什么意思
- dos命令bat文件中的特殊符号意思12个
- ::在C++中是什么意思
- cout函数在C++中是什么意思和和作用