Heim >Backend-Entwicklung >C++ >Warum gibt es in C-Bibliotheken zwei Konstruktorsymbole?
Doppelte Definition von Konstruktorsymbolen in C-Bibliotheken
In C erscheinen Konstruktordefinitionen in Bibliotheken zweimal, wenn sie mit nm untersucht werden. Dies liegt an der Itanium C ABI, die mehrere Konstruktoreinträge für die Polymorphismusunterstützung erfordert.
Die verstümmelten Namen für die Konstruktoren geben ihren Zweck an:
Auch wenn eine Klasse möglicherweise keine virtuellen Basisklassen hat, GCC gibt beide Konstruktoren aus, da ABI Polymorphismus unterstützt. Dieses Verhalten gilt als bekanntes Problem in GCC, wobei der Compiler dieses Verhalten möglicherweise wegoptimieren könnte, wenn kein Polymorphismus beteiligt ist.
Die verschiedenen Arten von Konstruktoren haben die folgenden Bedeutungen:
Während diese doppelte Ausgabe von Konstruktorsymbolen normalerweise keine Probleme verursacht, kann sie zu Verwirrung führen beim Untersuchen von Bibliothekssymbolen mit Tools wie nm.
Das obige ist der detaillierte Inhalt vonWarum gibt es in C-Bibliotheken zwei Konstruktorsymbole?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!