Мой C++ Filter, кажется, не работает должным образом, никаких выходных изменений
На моем Linux,.cpp файл, имеющий
void f(){}
struct C{void f(){}};
Я скомпилировал его и запустил двоичный файл, попытался разобрать имя функции:
$c++filt __Z1gv
__Z1gv
$c++filt __ZN1C1fEv
__ZN1C1fEv
Ну, это не работает, как я ожидал. Я что-то здесь не так понял? Должен ли я добавить несколько букв или удалить некоторые буквы, чтобы это работало?
Заметьте, что эти имена являются символами Clang, кажется, C++ Filter работает только для моей версии GCC Или C++ Filter должен иметь более новую версию для поддержки обоих компиляторов?
1 ответ
Возможно, вам придется пройти -_
флаг.
$ c++filt -_ __Z1gv
g()
$ c++filt -_ __ZN1C1fEv
C::f()
-_
--strip-подчеркиваниеВ некоторых системах компиляторы C и C++ ставят подчеркивание перед каждым именем. Например, имя C
foo
"получает имя низкого уровня"_foo
Msgstr "Эта опция удаляет начальное подчеркивание.c++filt
удаляет подчеркивание по умолчанию зависит от цели.