Lessico IT › Programmazione › Name mangling

Name mangling

Programmazione Svenska → Aggiornato: 2026-10-02

Il compilatore codifica un'intera firma (namespace, classe, tipi dei parametri, qualificatori) in un unico nome di simbolo, perché i linker conoscono solo nomi piatti.

È il meccanismo che rende possibile l'overloading: f(int) e f(double) diventano due simboli distinti e possono coesistere. Le conseguenze pratiche sono due. Primo, la codifica dipende dal compilatore e fa parte dell'interfaccia binaria: per questo i file oggetto di compilatori incompatibili non si possono collegare, e per questo la divisione del tipo stringa in libstdc++ ha prodotto per anni incomprensibili errori di simboli mancanti. Secondo, extern "C" disattiva il mangling e produce un nome semplice, indispensabile per tutto ciò che deve essere chiamato da C o cercato dinamicamente a runtime. Gli strumenti c++filt e nm -C traducono il percorso inverso, ed è così che si legge davvero un errore del linker.

← Torna al lessico