Hardmangling
Что такое name mangling?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Name mangling — кодирование имени C++ функции/типа в symbol для линкера, чтобы различать перегрузки и namespace’ы. extern "C" отключает mangling.
namespace ns {
void foo(int); // _ZN2ns3fooiE (Itanium ABI)
void foo(int, double); // _ZN2ns3fooidE
}
extern "C" void c_func(int); // _c_func — без mangling (для C-FFI)Деманглинг: c++filt _ZN2ns3fooiE → ns::foo(int). Программно — abi::__cxa_demangle (libstdc++). MSVC использует другой формат. Изменение mangling ломает совместимость скомпилированных библиотек — поэтому он часть ABI и стабилен.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.