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

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

Barbara Streisand
Barbara Streisand原创
2024-11-26 06:04:09623浏览

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