在 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中文网其他相关文章!