Мой C ++ Filter, кажется, не работает должным образом, никаких выходных изменений

На моем Linux, .cpp файл, имеющий

void f(){}
struct C{void f(){}};

Я скомпилировал его и запустил двоичный файл, попытался разобрать имя функции:

$c++filt __Z1gv
__Z1gv
$c++filt __ZN1C1fEv
__ZN1C1fEv

Ну, это не работает, как я ожидал. Я что-то здесь не так понял? Должен ли я добавить несколько букв или удалить некоторые буквы, чтобы это работало?

Обратите внимание, что эти имена являются символами Clang, кажется, C ++ Filt работает только для моей версии GCC? Или C ++ Filter должен иметь более новую версию для поддержки обоих компиляторов?

0

Решение

Возможно, вам придется пройти -_ флаг.

$ c++filt -_ __Z1gv
g()
$ c++filt -_ __ZN1C1fEv
C::f()

-_
—стрип-подчеркивание

В некоторых системах компиляторы C и C ++ ставят подчеркивание перед каждым именем. Например, имя Cfoo«получает имя низкого уровня»_fooMsgstr «Эта опция удаляет начальное подчеркивание. c++filt удаляет подчеркивание по умолчанию зависит от цели.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector