| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > __fastcall и т.п. |
| Автор: [ss]3L33T@ 26.10.2003, 12:20 |
| Объясните на языке дубов: Что такое __cdecl, __fastcall и им подобные. P.S. Просьба не посылать меня на другие уроки в инете. Я задаю вопросы на форуме, потому что тут можно получить нормальный ответ, а не списанный с книги. Объясняйте чётко и проще, ведь очень многие на таких формух - новички и они хотят всё знать |
| Автор: 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@ Это не так сложно. По началу, конечно, много не понятно. На такие вопросы может ответить практически любой постоянный участник форума. Но многим это кажется уже не интересным и слишком элементарным. На этом - "точка". На это сообщение прошу не отвечать. Флейм не разводить. |