我有一個函數類方法的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