Поделиться через


Передача и соглашения об именовании аргумента

Только для систем Microsoft

Все аргументы расширены до 32 бита, когда они передаются.Возвращаемые значения также расширены до 32 бита и возвращаются в регистре EAX, за исключением 8 структур байтов, которые возвращаются в EDX: пары регистра EAX.Большие структуры возвращаются в регистре EAX как указатели на скрытый возвращения структур.Параметры передаются в стек справа налево.Структуры, которые не стручков не возвращаются в регистрах.

Компилятор создает код пролога и эпилога для сохранения и извлечения регистры ESI, EDI, EBX EBP, и, если они используются в функции.

ПримечаниеПримечание

Когда структура, объединение или класс возвращается из функции значением всем определениям типов должны совпадать, еще программы могут завершиться ошибкой во время выполнения.

Сведения о том, как определить собственный код пролога и эпилога функции см. в разделе Нагие вызовы функций.

Следующие соглашения о вызовах поддерживаемые компилятором visual C/C++.

Ключевое слово

Очистка стека

Передача параметров

__cdecl

Вызывающий объект

Помещает параметры в стек в обратном порядке (справа налево)

__clrcall

нет

Загрузите параметры в стек выражений среды CLR в порядке (слева направо).

__stdcall

Вызываемый объект

Помещает параметры в стек в обратном порядке (справа налево)

__fastcall

Вызываемый объект

Затем сохраняется в регистрах, в стеке отправлянных

__thiscall

Вызываемый объект

Отправлянно в стеке. this указатель, хранящиеся в ECX

Дополнительные сведения см. в разделе Устаревшие соглашения о вызовах.

ЭЛЕМЕНТ, относящийся

См. также

Ссылки

Соглашения о вызовах