Навеяно предыдущим сообщением
От: DuШes  
Дата: 08.08.02 11:15
Оценка:
Привет всем...

Помогите пожалуйста разобраться с такими спецификаторами, как __cdecl или __stdcall///
Для чего они нужны и что это такое вообще, с чем можно съесть и где применять?
Re: Навеяно предыдущим сообщением
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 08.08.02 11:22
Оценка: 8 (1)
Здравствуйте DuШes, Вы писали:

DШ>Помогите пожалуйста разобраться с такими спецификаторами, как __cdecl или __stdcall///


Цитата из Jeff Robbins:
... Различия между вызовами __cdecl и __stdcall довольно тонкие. При стандартном вызове вызываемая функция сама очищает стек, поэтому она должна точно "знать" количество ожидаемых параметров. В связи с этим фуекция стандартного вызова не может иметь переменного числа аргументов (как, например, printf). Поскользу для функций __cdecl стек очищает вызывающая программа, функции с переменным числом аргументов допустимы. Стандартный вызов используется по умолчанию для системных функций Win32, а также для функций языка Visual Basic. (... и многих других (это от меня))
Алексей Кирдин
Re: Навеяно предыдущим сообщением
От: Andrij Украина  
Дата: 08.08.02 11:24
Оценка: 8 (1)
Здравствуйте DuШes, Вы писали:

DШ>Помогите пожалуйста разобраться с такими спецификаторами, как __cdecl или __stdcall///

DШ>Для чего они нужны и что это такое вообще, с чем можно съесть и где применять?

__cdecl — ето С++ порядок визова функции — параметри проталкиваются в стек с конца
__stdcall — соответственно, возов Паскаль — с первого елемента
Нужно для согласования визовов функций при работе с разными компиляторами (все визовы в Виндозе __stdcall)
make it simple as possible, but not simpler
Re[2]: Навеяно предыдущим сообщением
От: DuШes  
Дата: 08.08.02 11:28
Оценка:
Здравствуйте Andrij, Вы писали:

A>Здравствуйте DuШes, Вы писали:


DШ>>Помогите пожалуйста разобраться с такими спецификаторами, как __cdecl или __stdcall///

DШ>>Для чего они нужны и что это такое вообще, с чем можно съесть и где применять?

A>__cdecl — ето С++ порядок визова функции — параметри проталкиваются в стек с конца

A>__stdcall — соответственно, возов Паскаль — с первого елемента
A> Нужно для согласования визовов функций при работе с разными компиляторами (все визовы в Виндозе __stdcall)



При использовании MS VC++ где я могу столнуться с этим и если можно пример практического применения.....()
Кроме как __cdecl и __stdcall еще какие-нибудь правила вызова имеются?
Re: Навеяно предыдущим сообщением
От: grad  
Дата: 08.08.02 11:28
Оценка:
Здесь неплохо описано. Кратко и со вкусом.
cool site
Re[3]: Навеяно предыдущим сообщением
От: Vi2 Удмуртия http://www.adem.ru
Дата: 08.08.02 11:39
Оценка: 8 (1)
Здравствуйте DuШes, Вы писали:

DШ>При использовании MS VC++ где я могу столнуться с этим


В Settings... проекта в MS VC на вкладке C/C++ в категории Code Generation есть Calling convention для всего проекта. По умолчанию __cdecl, но если кто-либо изменит (а их много таких Визардов разных!) это поле — держись!

DШ>если можно пример практического применения.....()


Всё СОМ на __stdcall! Чем не пример.

DШ>Кроме как __cdecl и __stdcall еще какие-нибудь правила вызова имеются?


Вот они: Argument Passing and Naming Conventions
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re: Навеяно предыдущим сообщением
От: Dr_Sh0ck Беларусь  
Дата: 08.08.02 12:20
Оценка:
Здравствуйте DuШes, Вы писали:

DШ>Привет всем...


DШ>Помогите пожалуйста разобраться с такими спецификаторами, как __cdecl или __stdcall///

DШ>Для чего они нужны и что это такое вообще, с чем можно съесть и где применять?

Вот здесь посмотри
Do not fake yourself ;)
ICQ#: 198114726
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.