IT-словарь › Программирование › Манглинг имён

Манглинг имён

Программирование Svenska → Обновлено: 2026-10-18

Кодирование компилятором всей сигнатуры — пространства имён, класса, типов параметров, квалификаторов — в одно имя символа, потому что компоновщик понимает только плоские имена.

Именно этот механизм делает возможной перегрузку: f(int) и f(double) становятся разными символами и могут сосуществовать. В повседневной жизни важны два следствия. Во-первых, кодирование зависит от компилятора и входит в бинарный интерфейс, поэтому объектные файлы несовместимых компиляторов не скомпоновать, а разделение строкового типа в libstdc++ годами порождало загадочные ошибки о недостающих символах. Во-вторых, extern "C" отключает манглинг и даёт простое имя — это необходимо для всего, что вызывается из C или ищется динамически во время выполнения. Обратно имена переводят c++filt и nm -C — так на практике и читают ошибки компоновщика.

← Назад к словарю