Heim > Artikel > Backend-Entwicklung > Warum gibt der Itanium C ABI Dual-Konstruktor-Symbole aus?
Das Itanium C ABI spezifiziert die Verstümmelung von Funktionsnamen, um Informationen über ihre Parameter einzuschließen und Funktionalität. Konstruktornamen folgen einem bestimmten Muster:
_Z | N | <class_name> | <ctor-type> | E | <parameters> prefix | nested | `Thing` | Constructor | end nested | parameters: `int`
Die Konstruktorsymbole in der Bibliothek erscheinen aufgrund der unterschiedlichen Arten von Konstruktoren, die von GCC ausgegeben werden, zweimal:
Auch wenn die betreffende Klasse keine virtuellen Basisklassen hat, gibt GCC dennoch beide Konstruktoren als Nebenprodukt der Unterstützung von Polymorphismus aus. Wenn kein Polymorphismus beteiligt ist, könnte GCC optimieren, indem es nur einen Konstruktor ausgibt.
Die beiden Konstruktoren haben aufgrund der C1- und C2-Bezeichner in ihren verstümmelten Namen unterschiedliche Namen, was darauf hindeutet die verschiedenen Arten von Konstruktionen, die sie ausführen.
Die doppelte Emission von Konstruktorsymbolen ist eine Folge der Itanium C ABI und Unterstützung für Polymorphismus, kann aber durch GCC wegoptimiert werden, wenn Polymorphismus nicht verwendet wird.
Das obige ist der detaillierte Inhalt vonWarum gibt der Itanium C ABI Dual-Konstruktor-Symbole aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!