Cоглашения о вызовах (calling conventions)
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 05.08.05 10:53
Оценка: 2 (1) +1
#Имя: FAQ.cpp.calling_conventions
Здравствуйте, <Аноним>, Вы писали:

А>Здрасьте. Где бы мне почитать про все эти __cdecl, __declspec и т. д. Можно ссылку, плиз?


Согла-       Порядок          Очистка           Расширение           Примечания
шение        передачи         стека             имени
вызова       аргументов

__cdecl      Справа           Аргументы из      К имени функции      Применяется 
             налево           стека удаляются   добавляется пре-     по умолчанию
                              вызывающей        фикс из символа      функциями
                              функцией.         подчеркивания:       C и C++
                              Только это сог-   например, _Foo
                              лашение поддер-  
                              живает перемен-  
                              ное число        
                              аргументов       
                              функций.         
                                               

__stdcall    Справа           Вызванная         К имени функции      Используется почти
             налево           функция сама      добавляется пре-     всеми системными
                              удаляет свои      фикс из символа      функциями; 
                              аргументы из      подчеркивания        Используется по
                              стека.            и суффикс из сим-    умолчанию внут-
                                                вола @, за которым   ренними функциями
                                                следует десятич-     Visual Basic
                                                ный размер списка
                                                аргументов в бай-
                                                тах: например,
                                                _Foo@12
                                               

__fastcall   Первые два       Вызванная         К имени функции      Поддерживается
             параметра        функция сама      добавляется пре-     только процессорами
             типа DWORD       удаляет свои      фикс из символа      с архитектурой Intel.
             передаются       аргументы из      @ и суффикс из       Это соглашение ис-
             в регистрах      стека.            этого же символа,    пользуется по умолча-
             ECX и EDX;                         за которым сле-      нию компиляторами
             Остальные                          дует десятичный      Borland Delphi.
             параметры                          размер списка 
             передаются                         аргументов в бай-
             справа налево.                     тах: например,
                                                @Foo@12

                                               
this         Справа налево.   Аргументы из      Нет.                 Автоматически приме-
(__thiscall) Параметр         стека удаляются                        няется к методам клас-
             this             вызывающей                             сов C++, пока вы не ука-
             передается       функцией.                              жете стандартное согла-
             в регистре                                              шение вызова. При 
             ECX.                                                    объявлении методов COM 
                                                                     используется стандартное
                                                                     соглашение вызова.
                                    
                                    
                                               
naked        Справа налево.   Аргументы из      Нет.                 Используется, когда
                              стека удаляются                        программисту нужно
                              вызывающей                             написать собственные
                              функцией.                              пролог и эпилог.


(с) Джон Роббинс. Отладка приложений Microsoft .NET и Microsoft Windows
Автор(ы): Джон Роббинс

Ошибки — жуткая гадость. Многоточие... Ошибки являются причиной обреченных
на гибель проектов с сорванными сроками, ночными бдениями и опостылевшими
коллегами. Ошибки могут превратить вашу жизнь в кошмар, поскольку, если
изрядное их число затаится в вашем продукте, пользователи могут прекратить
его применение, и вы потеряете работу. Ошибки — серьезный бизнес.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.