最近在做C++ Mangling,简而言之就是把"_ZN6System5Sound4beepEv"转换为真实的定义 “System::Sound::beep();”,也就是c++filt主要干的事情。
C++的Mangling巨复杂,你可以看一下这些示例:

幸好LLVM和GCC提供了cxxabi.h这个文件,有一个函数能帮我们干这个事情
extern _LIBCXXABI_FUNC_VIS char *__cxa_demangle(const char *mangled_name,
char *output_buffer,
size_t *length, int *status);
注意mangled_name是单下划线('_')开头。
网友评论