在代码进行连接的时候,经常找不到某个函数,不过由于c++做了一些修饰,所以很多时候不大清楚这个字符串到底代表什么,下面是一位大神给的解释:地址
GCC的基本C++名称修饰方法如下:所有的符号都以"_Z"开头,对于嵌套的名字(在名称空间或在类里面的),后面紧跟"N",然后是各个名称空间和类的名字,每个名字前是名字字符串长度,再以"E"结尾。比如N::C::func经过名称修饰以后就是_ZN1N1C4funcE。对于一个函数来说,它的参数列表紧跟在"E"后面,对于int类型来说,就是字母"i"。所以整个N::C::func(int)函数签名经过修饰为_ZN1N1C4funcEi。更为具体的修饰方法我们在这里不详细介绍,有兴趣的读者可以参考GCC的名称修饰标准。
不过考虑到自己解析麻烦,C++也提供了相应的工具 c++filt :
c++filt _ZN5trans3std4funcEi
//result
trans::std::func(int)