Помогите пожалуйста разобраться с такими спецификаторами, как __cdecl или __stdcall///
Для чего они нужны и что это такое вообще, с чем можно съесть и где применять?
Здравствуйте DuШes, Вы писали:
DШ>Помогите пожалуйста разобраться с такими спецификаторами, как __cdecl или __stdcall///
Цитата из Jeff Robbins:
... Различия между вызовами __cdecl и __stdcall довольно тонкие. При стандартном вызове вызываемая функция сама очищает стек, поэтому она должна точно "знать" количество ожидаемых параметров. В связи с этим фуекция стандартного вызова не может иметь переменного числа аргументов (как, например, printf). Поскользу для функций __cdecl стек очищает вызывающая программа, функции с переменным числом аргументов допустимы. Стандартный вызов используется по умолчанию для системных функций Win32, а также для функций языка Visual Basic. (... и многих других (это от меня))
Здравствуйте DuШes, Вы писали:
DШ>Помогите пожалуйста разобраться с такими спецификаторами, как __cdecl или __stdcall/// DШ>Для чего они нужны и что это такое вообще, с чем можно съесть и где применять?
__cdecl — ето С++ порядок визова функции — параметри проталкиваются в стек с конца __stdcall — соответственно, возов Паскаль — с первого елемента
Нужно для согласования визовов функций при работе с разными компиляторами (все визовы в Виндозе __stdcall)
Здравствуйте Andrij, Вы писали:
A>Здравствуйте DuШes, Вы писали:
DШ>>Помогите пожалуйста разобраться с такими спецификаторами, как __cdecl или __stdcall/// DШ>>Для чего они нужны и что это такое вообще, с чем можно съесть и где применять?
A>__cdecl — ето С++ порядок визова функции — параметри проталкиваются в стек с конца A>__stdcall — соответственно, возов Паскаль — с первого елемента A> Нужно для согласования визовов функций при работе с разными компиляторами (все визовы в Виндозе __stdcall)
При использовании MS VC++ где я могу столнуться с этим и если можно пример практического применения.....()
Кроме как __cdecl и __stdcall еще какие-нибудь правила вызова имеются?
Здравствуйте DuШes, Вы писали:
DШ>При использовании MS VC++ где я могу столнуться с этим
В Settings... проекта в MS VC на вкладке C/C++ в категории Code Generation есть Calling convention для всего проекта. По умолчанию __cdecl, но если кто-либо изменит (а их много таких Визардов разных!) это поле — держись!
DШ>если можно пример практического применения.....()
Всё СОМ на __stdcall! Чем не пример.
DШ>Кроме как __cdecl и __stdcall еще какие-нибудь правила вызова имеются?
Здравствуйте DuШes, Вы писали:
DШ>Привет всем...
DШ>Помогите пожалуйста разобраться с такими спецификаторами, как __cdecl или __stdcall/// DШ>Для чего они нужны и что это такое вообще, с чем можно съесть и где применять?