Heim >Backend-Entwicklung >C++ >Wie kann ich die verstümmelten Typnamen von GCC aus typeid.name() entschlüsseln?
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!