6

Using gcc, when I ask for an object/variable's type using typeid, I get a different result from the type_info::name method from what I'd expect to get on Windows. I Googled around a bit, and found out that RTTI names are implementation-specific.

Problem is, I want to get a type's name as it would be returned on Windows. Is there an easy way to do this?

Good Person
  • 1,437
  • 2
  • 23
  • 42
Aleph Dvorak
  • 338
  • 1
  • 16

3 Answers3

7

If it's what you're asking, there is no compiler switch that would make gcc behave like msvc regarding the name returned by type_info::name().

However, in your code you can rely on the gcc specific __cxa_demangle function.

There is in fact an answer on SO that addresses your problem.

Reference: libstdc++ manual, Chapter 40. Demangling.

Community
  • 1
  • 1
Gregory Pakosz
  • 69,011
  • 20
  • 139
  • 164
1

c++ function names really include all the return and argument type information as well as the class and method name. When compiled, they are 'mangled' into a standard form (standard for each compiler) that can act as an assembler symbol and includes all the type information.

You need to run a function or program to reverse this mangling, called a demangler.

try running

c++filt myoutput.txt

on the output of the function. This demangles the real symbol name back into a human readable form.

Alex Brown
  • 41,819
  • 10
  • 94
  • 108
0

Based on this other question Is there an online name demangler for C++? I've written a online tool for this: c++filtjs

Community
  • 1
  • 1
nattofriends
  • 1,235
  • 2
  • 10
  • 5