<legend id='XcmhO'><style id='XcmhO'><dir id='XcmhO'><q id='XcmhO'></q></dir></style></legend>

  • <small id='XcmhO'></small><noframes id='XcmhO'>

    <i id='XcmhO'><tr id='XcmhO'><dt id='XcmhO'><q id='XcmhO'><span id='XcmhO'><b id='XcmhO'><form id='XcmhO'><ins id='XcmhO'></ins><ul id='XcmhO'></ul><sub id='XcmhO'></sub></form><legend id='XcmhO'></legend><bdo id='XcmhO'><pre id='XcmhO'><center id='XcmhO'></center></pre></bdo></b><th id='XcmhO'></th></span></q></dt></tr></i><div id='XcmhO'><tfoot id='XcmhO'></tfoot><dl id='XcmhO'><fieldset id='XcmhO'></fieldset></dl></div>
      • <bdo id='XcmhO'></bdo><ul id='XcmhO'></ul>

      1. <tfoot id='XcmhO'></tfoot>

        为什么 typeid.name() 使用 GCC 返回奇怪的字符以及如

        时间:2023-09-19

          <tbody id='KaxNE'></tbody>

                  <bdo id='KaxNE'></bdo><ul id='KaxNE'></ul>

                  <small id='KaxNE'></small><noframes id='KaxNE'>

                • <i id='KaxNE'><tr id='KaxNE'><dt id='KaxNE'><q id='KaxNE'><span id='KaxNE'><b id='KaxNE'><form id='KaxNE'><ins id='KaxNE'></ins><ul id='KaxNE'></ul><sub id='KaxNE'></sub></form><legend id='KaxNE'></legend><bdo id='KaxNE'><pre id='KaxNE'><center id='KaxNE'></center></pre></bdo></b><th id='KaxNE'></th></span></q></dt></tr></i><div id='KaxNE'><tfoot id='KaxNE'></tfoot><dl id='KaxNE'><fieldset id='KaxNE'></fieldset></dl></div>
                  <tfoot id='KaxNE'></tfoot>
                  <legend id='KaxNE'><style id='KaxNE'><dir id='KaxNE'><q id='KaxNE'></q></dir></style></legend>
                • 本文介绍了为什么 typeid.name() 使用 GCC 返回奇怪的字符以及如何使其打印未混淆的名称?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  为什么我运行这个main.cpp:

                  #include <iostream>
                  #include <typeinfo>
                  
                  using namespace std;
                  
                  struct Blah {};
                  
                  int main() {
                    cout << typeid(Blah).name() << endl;
                    return 0;
                  }
                  

                  通过使用 GCC 4.4.4 版编译它:

                  By compiling it with GCC version 4.4.4:

                  g++ main.cpp
                  

                  我明白了:

                  4Blah
                  

                  在 Visual C++ 2008 上,我会得到:

                  On Visual C++ 2008, I would get:

                  struct Blah
                  

                  有没有办法让它只打印Blahstruct Blah?

                  Is there a way to make it just print Blah or struct Blah?

                  推荐答案

                  name 的返回是实现定义的:一个实现甚至不需要为不同类型返回不同的字符串.

                  The return of name is implementation defined : an implementation is not even required to return different strings for different types.

                  您从 g++ 得到的是一个装饰名称,您可以使用c++filt 命令或 __cxa_demangle.

                  What you get from g++ is a decorated name, that you can "demangle" using the c++filt command or __cxa_demangle.

                  这篇关于为什么 typeid.name() 使用 GCC 返回奇怪的字符以及如何使其打印未混淆的名称?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:CMake 中的调试与发布 下一篇:GCC STL 边界检查

                  相关文章

                  最新文章

                • <small id='XGM7k'></small><noframes id='XGM7k'>

                • <i id='XGM7k'><tr id='XGM7k'><dt id='XGM7k'><q id='XGM7k'><span id='XGM7k'><b id='XGM7k'><form id='XGM7k'><ins id='XGM7k'></ins><ul id='XGM7k'></ul><sub id='XGM7k'></sub></form><legend id='XGM7k'></legend><bdo id='XGM7k'><pre id='XGM7k'><center id='XGM7k'></center></pre></bdo></b><th id='XGM7k'></th></span></q></dt></tr></i><div id='XGM7k'><tfoot id='XGM7k'></tfoot><dl id='XGM7k'><fieldset id='XGM7k'></fieldset></dl></div>
                    <tfoot id='XGM7k'></tfoot>
                      <bdo id='XGM7k'></bdo><ul id='XGM7k'></ul>

                    <legend id='XGM7k'><style id='XGM7k'><dir id='XGM7k'><q id='XGM7k'></q></dir></style></legend>