如何使用c ++filt [重复]

Posted

技术标签:

【中文标题】如何使用c ++filt [重复]【英文标题】:How to use c++filt [duplicate] 【发布时间】:2011-10-22 10:30:55 【问题描述】:

可能重复:Can I ungarble GCC's RTTI names?

我已经开始在 gcc 中使用 code::blocks(只是再也无法忍受 VS2010),虽然我总体上很满意,但在 gcc 中绝对做得不好的一件事是当我想要使用typeid 我得到的不是确切的类型名称,而是一些符号表示法(为什么?为什么他们不能使用类型名称?)无论如何,我听说 c++filt 可以帮助解决这类问题,但我没有现在如何使用它(或安装它 - 我必须下载它吗?)。

【问题讨论】:

反对票不是来自我,所以我不能说,但你的问题表述得不好。尽量不要包含不相关的细节(比如你“无法忍受”VS),不要对你不理解的事情持否定态度(比如类型修改),如果你找到了一个工具,你think 符合您的需求,使用 Google 获取有关它的一些信息 - 很明显,如果您没有它,您需要从某个地方获取它,并且某个地方很可能有关于您如何使用它的文档. @Mat 好的,谢谢,没问题。 + 1 【参考方案1】:

typeid 返回一个对std::type_info 实例的引用,所以我假设您正在使用它的name() 方法。

要回答您为什么没有获得“确切”类型名称的问题:name() 返回一个实现定义的字符串,因此您不应该依赖它有任何意义。特别是,它甚至不必是唯一的类型。

您应该直接使用 ==!=.before() 比较 std::type_info 对象,如果您支持 C++11,则可能与 .hash_code() 结合使用。

【讨论】:

以上是关于如何使用c ++filt [重复]的主要内容,如果未能解决你的问题,请参考以下文章

可以使用 c++filt 将解构后的名称写回 .s 文件本身吗?

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

c++filt 不会对 typeid 名称进行分解

如何使用powershell将文本($)替换为文本文件中的引号

linux下的c++filt命令

linux下的c++filt命令