Для чего компиляторы C++ "манглят" имена функций.
Смотрите, компиляторы C++ унаследовали линкер из C.
В C-шном линкере имя функции напрямую отображалось на имя объекта. Это работало, поскольку в C нет перегруженных функций.
Но в C++ перегрузки функций есть (а также пространства имён и классы), и функции
int f(int x) { ... }
и
int f(int x, int y) { ... }
получили бы одинаковое имя! А компоновщик такую ситуацию обрабатывать не умел, для него все имена должны были быть уникальны. Для того, чтобы написанные выше две функции смогли скомпоноваться, и чтобы и не менять логику компоновщика, придумали простой выход: кодировать сигнатуру функции, то есть, типы параметров (а также имя класса и пространство имён), в имени, передавать компоновщику дополненное имя.
В принципе, такое видоизменение имён не является обязательным, и не требуется стандартом. Тем не менее, это популярная техника реализации взаимодействия компилятора и компоновщика, которая применяется как в стандарте POSIX, так и в Windows ABI.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В связи с сложностями которые возникают в связи с импортом классов при явном подключении DLL (с помощью winapi), стоит ли его использовать, есть...
Есть задачка, найти сколько чисел до 1000 в которых не повторяются цифрыПытаюсь решить простым перебором, каждого числа в стринг и далее проверяю...
Для вывода даты используя формат в таком виде: