У меня есть метод класса функции, ValueHolder :: printValueполучить C++ функции искореженного имя во время компиляции (или исполнение)
class ValueHolder {
public:
void printValue();
} ;
Как определить свое искаженное имя во время компиляции (или выполнения).
Например, я хотел бы сделать это:
const char *mangled_name = GetMangledNameOfSymbol(&ValueHolder::printValue);
Эта функция может возвращать строку как:
"_ZN11ValueHolder10printValueEv"
Согласно @Marco А. Предпосылкой является современный компилятор. Один, который поддерживает typeid, и с включенными флагами, чтобы включить эту функцию.
Я также принимаю ответ, который может работать в практичности для Gcc & Clang и заглушки для MSVC.
Просьба также уточнить, что это зависит не только от компилятора + версии, но и флаги компиляции (например, станд = C++ 11 и станд :: строки, и/или такие вещи, как '-DGLIBCXX_DEBUG') – malat
@ malat Спасибо, я добавлю эту часть к ответу. –
Это отличный ответ. Я собираюсь изменить вопрос чуть-чуть, чтобы отразить использование современного компилятора. – iamacomputer