我有一个函数类方法的C++函数错位的名字,而ValueHolder :: PRINTVALUE得到在编译时(或运行时)
class ValueHolder {
public:
void printValue();
} ;
如何确定在编译时(或运行时),它的重整名称。
比如我想做到这一点:
const char *mangled_name = GetMangledNameOfSymbol(&ValueHolder::printValue);
该功能可能会返回像一个字符串:
"_ZN11ValueHolder10printValueEv"
按@Marco答:前提是一个现代化的编译器。一个支持typeid,并打开标志启用此功能。
我也会接受一个可以在GCC & Clang实用工作的答案,以及MSVC的一个存根。
还请澄清,它不仅依赖于编译器+版本,而且编译标志(如STD = C++ 11的std :: string,和/或类似的东西'-DGLIBCXX_DEBUG') – malat
@谢谢,我会将这一部分添加到答案中。 –
这是一个很好的答案。我要改变这个问题只是一点点,以反映使用现代编译器。 – iamacomputer