• [^] # Re: Compatibilité de l'ABI C++

    Posté par . En réponse à la dépêche GCC 3.2.3 est sorti. Évalué à 3.

    ABI désigne la convention qui permet la compatibilité binaire entre objets compilés avec deux outils différents.
    En C, l'ABI s'occupe essentiellement de la convention d'appel de fonction.
    En C++, on ajoute
    - le polymorphisme : où se trouve le pointeur de table de méthodes virtuelles de chaque objet, en tenant compte de l'héritage multiple.
    - le "name mangling" : en C int toto(int) et int toto( char ) c'est interdit, pas en C++, ça veut dire que les objets compilés doivent stocker des informations de type des arguments en plus des noms de fonction. En plus en C++ il faut décider comment nommer les instanciation de templates.
    - la "run-time type identification" qui permet de demander à un objet s'il est d'un type particulier.
    - les exceptions
    Je ne pense pas avoir été exhaustif sur les fonctionnalité du C++ qui font apparaître le besoin d'une ABI stable. Ce qui est sûr, c'est que gcc en a désormais publié une.