Qu'est-ce que Décoration de noms (name mangling) ?

Construction par le compilateur C++ de noms de symboles intégrant les types des arguments et l'espace de noms. Elle permet à l'éditeur de liens de distinguer les fonctions surchargées.

Nom japonais: 名前修飾

« Décoration de noms (name mangling) » apparaît dans 1 questions d'entraînement réparties sur 1 thèmes, dont Éditeurs de liens, chargeurs et exécutables.

Domaine: Éditeurs de liens, chargeurs et exécutables

S'entraîner : questions sur Décoration de noms (name mangling)

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 ?

  1. ARendre les noms de fonctions illisibles pour empêcher le vol du programme
  2. BRaccourcir les noms de fonctions pour réduire la taille de l'exécutable
  3. 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.

Questions mentionnant « Décoration de noms (name mangling) » (1)

  1. 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 ?

Termes associés

Éditeur de liens (linker) ASLR Bibliothèque partagée Bibliothèque statique Chargeur (loader) Code indépendant de la position Éditeur de liens dynamique Édition de liens dynamique Édition de liens statique ELF

Retour au glossaire