IT-Lexikon › Programmierung › Name Mangling

Name Mangling

Programmierung Svenska → Aktualisiert: 2026-09-12

Der Compiler codiert eine ganze Signatur — Namensraum, Klasse, Parametertypen, Qualifizierer — in einen einzigen Symbolnamen, weil der Linker nur flache Namen versteht.

Genau dieser Mechanismus macht Overloading möglich: f(int) und f(double) werden zu zwei unterschiedlichen Symbolen und können deshalb koexistieren. Zwei Folgen prägen den Alltag. Erstens ist die Codierung compilerspezifisch und Teil der binären Schnittstelle — deshalb lassen sich Objektdateien inkompatibler Compiler nicht zusammenlinken, und deshalb sorgte die Aufspaltung des String-Typs in libstdc++ jahrelang für rätselhafte Fehler wegen fehlender Symbole. Zweitens schaltet extern "C" das Mangling ab und liefert einen unveränderten Namen, was für alles nötig ist, was aus C heraus aufgerufen oder zur Laufzeit dynamisch nachgeschlagen werden soll. Die Werkzeuge c++filt und nm -C übersetzen zurück — so liest man einen Linkerfehler tatsächlich.

← Zurück zum Lexikon