Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > __fastcall и т.п.


Автор: [ss]3L33T@ 26.10.2003, 12:20
Объясните на языке дубов: Что такое __cdecl, __fastcall и им подобные.

P.S.
Просьба не посылать меня на другие уроки в инете. Я задаю вопросы на форуме, потому что тут можно получить нормальный ответ, а не списанный с книги. Объясняйте чётко и проще, ведь очень многие на таких формух - новички и они хотят всё знать baaa.gif

Автор: RAN 26.10.2003, 12:41
При вызовах функций используются разные способы передачи параметров.

cdecl (с declaration) - объявление в стиле языка C. Параметры передаются через стек. Помещаются справа налево, а изымаются наоборот. Таким образом становиться возможно передавать неопределённое кол-во параметров (как в printf).

fastcall - "быстрый вызов". Параметры передаются через регистры процессора.

stdcall (переопределён как PASCAL) - стандартным, называется способ, принятый в паскале. Параметры передаются через стек, но в другом пордке по отношению к cdecl. Нельзя передать неопределённое кол-во параметров.

В C++ есть ещё thiscall - вызов функции члена класса. Неявно передаётся указатель на класс.

P.S. Это также влияет на то, как твоя функция будет называться в действительности. Потому как компилятор использует не то имя, которое ты дал, а сформированное на основе твоего своё собственное.

Автор: [ss]3L33T@ 26.10.2003, 12:56
Супер!
Сколько тебе лет? А сколько из них ты кодишь?

Автор: RAN 26.10.2003, 14:03
[ss]3L33T@ smile.gif smile.gif
Это не так сложно. По началу, конечно, много не понятно. На такие вопросы может ответить практически любой постоянный участник форума. Но многим это кажется уже не интересным и слишком элементарным. На этом - "точка". На это сообщение прошу не отвечать. Флейм не разводить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)