Éditeurs de liens, chargeurs et exécutables
Quel est le principal objectif de la décoration de noms (mangling), par laquelle le compilateur C++ ajoute au nom d'une fonction des informations comme le type de ses arguments pour former le nom de symbole ?
- ARendre les noms de fonctions illisibles pour empêcher le vol du programme
- BRaccourcir les noms de fonctions pour réduire la taille de l'exécutable
- CPermettre à l'éditeur de liens de distinguer les fonctions de même nom aux types d'arguments différents (surcharge) et les espaces de noms
Afficher la réponse et l'explication
Réponse : C. Permettre à l'éditeur de liens de distinguer les fonctions de même nom aux types d'arguments différents (surcharge) et les espaces de noms
L'éditeur de liens compare les symboles uniquement par leur chaîne de nom. En C++, on peut créer des fonctions de même nom comme « print(int) » et « print(double) », impossibles à distinguer telles quelles. Le compilateur intègre donc au nom le type des arguments, etc., comme « _Z5printi ». Les fonctions C n'étant pas décorées, pour appeler une fonction C depuis C++, on ajoute « extern "C" » afin de supprimer la décoration.
Continuer : 9 autres questions sur Éditeurs de liens, chargeurs et exécutables