Heim > Backend-Entwicklung > C++ > Wie kann ich die verstümmelten Typnamen von GCC aus typeid.name() entschlüsseln?

Wie kann ich die verstümmelten Typnamen von GCC aus typeid.name() entschlüsseln?

Barbara Streisand
Freigeben: 2024-11-26 06:04:09
Original
726 Leute haben es durchsucht

How Can I Demangle GCC's Mangled Type Names from typeid.name()?

Entschlüsseln entwirrter Typnamen mit typeid.name() in GCC

Bei Verwendung von typeid.name() zum Abrufen des Namens eines Typs , können verschiedene Compiler unterschiedliche Ergebnisse liefern. Es ist beispielsweise bekannt, dass GCC einen „entstellten“ Namen zurückgibt, während Visual C einen nicht entstellten Namen liefert.

Diese Diskrepanz ergibt sich aus der Tatsache, dass der Rückgabewert von typeid.name() durch die Implementierung definiert ist. Gemäß dem C-Standard liegt es bei jeder Implementierung im Ermessen, zu bestimmen, wie Typnamen dargestellt werden.

Im Fall von GCC enthält der von typeid.name() zurückgegebene Name zusätzliche Informationen, die als „entstellter Name“ bezeichnet werden. " Dieses Format umfasst Dekorationen, die internen Compilerzwecken dienen. Um den entzerrten Typnamen zu erhalten, können Sie den Befehl c filt oder die Funktion __cxa_demangle verwenden.

c filt 4Blah

Ausgabe: struct Blah

__cxa_demangle("4Blah", nullptr, nullptr, nullptr)

Ausgabe: Blah

Mit diesen Werkzeugen können Sie die dekorierten Typnamen entschlüsseln und die gewünschte entzerrte Darstellung abrufen.

Das obige ist der detaillierte Inhalt vonWie kann ich die verstümmelten Typnamen von GCC aus typeid.name() entschlüsseln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage