#c++ #windows
Например, функция WinMain@16. Что означает "собака" и число после нее? У меня есть идея, что это общий размер параметров в байтах, но я не уверен в этом.
Ответы
Ответ 1
В си перегружать функции нельзя, поэтому, когда код компилируется, компилятор может использовать имена функций по назначению. В с++ можно перегружать функции, а в скомпилированном коде уже нет данных о аргументах. Поэтому, компилятор делает "манглирование". В данном случае просто кодирует размер аргументов и добавляет их таким образом. Это позволяет потом линковщику все собрать правильно в исполнимый файл. Чуточку больше.Ответ 2
Это вовсе не имя функции. Это компиляторозависимый name mangling — имя дополняется другой информацией для внутренних целей. Смысла вне конкретного компилятора и его конкретной версии не имеет. Реальное имя функции — WinMain. Если вы пытаетесь скомпилировать под Windows что-нибудь нестандартным компилятором, возможно, вам нужно почитать этот ответ. Поскольку известно, что WinMain использует конвенцию вызова __stdcall, то согласно официальной документации правильное имя должно быть _WinMain@16 (спасибо @Abyx за уточнение).
Комментариев нет:
Отправить комментарий