繁体   English   中英

我的c ++ filt似乎无法正常工作,没有输出更改

[英]My c++filt doesn't seem to work properly, no output changes

在我的Linux上,我有一个.cpp文件,其中包含

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

我编译了它,然后将二进制文件串起来,尝试对函数名称进行分解:

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

好吧,它似乎没有按我预期的那样工作。 我在这里弄错了吗? 我是否必须添加一些字母或删除一些字母才能使其正常工作?

注意这些名称是names符号,似乎c ++ filt仅适用于我的gcc版本吗? 还是c ++ filt应该有较新的版本来支持两个编译器?

您可能需要传递-_标志。

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

-_
--strip-下划线

在某些系统上,C和C ++编译器都在每个名称前面都使用下划线。 例如,C名称“ foo ”获得低级名称“ _foo ”。 此选项删除初始下划线。 默认情况下, c++filt是否删除下划线取决于目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM