首页 > 后端开发 > C++ > 如何从 typeid.name() 中解开 GCC 的损坏类型名称?

如何从 typeid.name() 中解开 GCC 的损坏类型名称?

Barbara Streisand
发布: 2024-11-26 06:04:09
原创
727 人浏览过

How Can I Demangle GCC's Mangled Type Names from typeid.name()?

在 GCC 中使用 typeid.name() 分解未修饰的类型名称

使用 typeid.name() 检索类型名称时,不同的编译器可能会提供不同的结果。例如,众所周知,GCC 会返回“损坏的”名称,而 Visual C 则提供未损坏的名称。

这种差异源于 typeid.name() 的返回值是实现定义的这一事实。根据 C 标准,每个实现都可以自行决定如何表示类型名称。

对于 GCC,typeid.name() 返回的名称带有称为“损坏名称”的附加信息。 ”此格式包括用于内部编译器目的的装饰。要获得未损坏的类型名称,您可以使用 c filt 命令或 __cxa_demangle 函数。

c filt 4Blah

输出: struct Blah

__cxa_demangle("4Blah",空指针,空指针, nullptr)

输出:Blah

通过利用这些工具,您可以对修饰的类型名称进行分解并检索所需的未分解表示。

以上是如何从 typeid.name() 中解开 GCC 的损坏类型名称?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板