IT-lexicon › Programmeren › Name mangling

Name mangling

Programmeren Svenska → Bijgewerkt: 2026-10-03

De compiler codeert een hele signatuur (namespace, klasse, parametertypes, qualifiers) in één symboolnaam, omdat linkers alleen platte namen begrijpen.

Het is het mechanisme dat overloading mogelijk maakt: f(int) en f(double) worden twee verschillende symbolen en kunnen dus naast elkaar bestaan. Twee gevolgen domineren het dagelijks werk. Ten eerste is de codering compilerspecifiek en onderdeel van de binaire interface, waardoor objectbestanden van incompatibele compilers niet te linken zijn en de splitsing van het stringtype in libstdc++ jarenlang verbijsterende foutmeldingen over ontbrekende symbolen opleverde. Ten tweede schakelt extern "C" mangling uit en levert een gewone naam op, wat vereist is voor alles wat vanuit C wordt aangeroepen of tijdens runtime dynamisch wordt opgezocht. De tools c++filt en nm -C vertalen terug, en zo lees je in de praktijk een linkerfout.

← Terug naar het lexicon