Double définition des symboles de constructeur dans les bibliothèques C
En C, les définitions de constructeur apparaissent deux fois dans les bibliothèques lorsqu'elles sont examinées avec nm. Cela est dû à l'ABI Itanium C, qui nécessite plusieurs entrées de constructeur pour la prise en charge du polymorphisme.
Les noms mutilés des constructeurs indiquent leur objectif :
Même si une classe ne peut pas avoir de classes de base virtuelles, GCC émet les deux constructeurs en raison de la prise en charge du polymorphisme par ABI. Ce comportement est considéré comme un problème connu dans GCC, où le compilateur pourrait potentiellement optimiser ce comportement lorsque le polymorphisme n'est pas impliqué.
Les différents types de constructeurs ont les significations suivantes :
Bien que cette double émission de symboles constructeur ne pose généralement pas de problèmes, elle peut conduire à confusion lors de l'examen des symboles de bibliothèque avec des outils comme nm.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!