@sddvxd

Почему тут такой mangling?

Добрый день
Смотрю на прототип функции:

int WSAStartup(
  WORD      wVersionRequired,
  LPWSADATA lpWSAData
);

Если посчитать количество байт - выходит 6 (word 2 байта и 32 битный указатель - 4 байта), однако линковщик говорит, что неправильная ссылка на _WSAStartup@6. Попробовал _WSAStartup@8 - сработало. Почему там указано 8 байт в размерах аргументов?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
petermzg
@petermzg
Самый лучший программист
Calling conventions таблица 21.
Говориться, что это число указывает суммарное количество байт для всех параметров помещенное в стек
А в стек вы можете поместить минимальное значение равное разрядности платформы.
Для 32х битной платформы это 4 байта.
Отсюда следует, что у вас 2 значения минимум по 4 байта. Суммарно 8
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы