C++符号修改和符号改编

函数签名:函数签名包含了一个函数的信息,包括函数名,它的参数类型,它所在的类和命名空间等其他信息

 

GCC的基本C++名称修饰方法:所有的符号都以“_Z”开头,对于嵌套的名字(在名称空间或在类里),后紧跟“N”,然后是各个名称空间和类的名字,每个名字前是名字字符串长度,再以“E”结尾,函数的参数紧跟在E后面

 

例子:

int func(int);

float func(float)

class C { 
    int func(int);
    class C2 {
         int func (int);
    };    
    
};


namespace N {
    int func{int}
    class C {
        int func(int)
    };

};

 

 

 

可以用binutils中的c++filt工具来解析被修饰过的名称,如

$c++ filt _ZN1N1C4funcEi

 

posted @ 2023-05-26 11:11  woodx  阅读(86)  评论(0编辑  收藏  举报