2010-01-18 3 views
6

Wenn ich mit gcc nach einem Objekt/Variablentyp mit typeid frage, erhalte ich ein anderes Ergebnis von der Methode type_info :: name als von dem, was ich unter Windows erwarten würde. Ich habe etwas gegoogelt und herausgefunden, dass RTTI-Namen implementierungsspezifisch sind.Kann ich GCC RTTI-Namen deklarieren?

Problem ist, ich möchte den Namen eines Typs erhalten, wie es unter Windows zurückgegeben würde. Gibt es einen einfachen Weg, dies zu tun?

Antwort

1

C++ - Funktionsnamen enthalten alle Informationen zu Rückgabe und Argumenttyp sowie den Klassen- und Methodennamen. Wenn sie kompiliert werden, werden sie in eine Standardform "gemangelt" (Standard für jeden Compiler), die als Assembler-Symbol dienen kann und alle Typinformationen enthält.

Sie müssen eine Funktion oder ein Programm ausführen, um diese Mangelung umzukehren, die derangler genannt wird.

versuchen

c++filt myoutput.txt 

am Ausgang der Funktion ausgeführt wird. Dieser demangelt den echten Symbolnamen zurück in eine menschenlesbare Form.

Verwandte Themen