Задает соглашение о вызовах STDCALL - стиля в объявлении процедуры
Синтаксис
Описание
В декларациях процедур,
stdcall указывает, что процедура
будет использовать
stdcall конвенцию вызова. В конвенции
вызова
stdcall , любые параметры должны передаваться
(заталкиваться в стек) в обратном порядке, то есть справа налево. Процедурам
не нужно сохранять регистры EAX, ECX и EDX , а так же они должны подчищать
за собой стек (
POP любые параметры) перед
возвратом.
stdcall не разрешает использовать вариативные объявления
процедур (те с последним параметром в списке как "
...").
stdcall является конвенцией вызова по умолчанию в Windows, если
только другой вызов явно не указан , в том числе с помощью
блоков Extern.
stdcall
является стандартом (или наиболее распространенным соглашением о вызове) ,
используемым в языках
BASIC, а также
Windows API.
Пример
Declare Function Example stdcall (param1 As Integer, param2 As Integer) As Integer
Declare Function Example2 cdecl (param1 As Integer, param2 As Integer) As Integer
Function Example stdcall (param1 As Integer, param2 As Integer) As Integer
' Это STDCALL функция, первый
параметр в стеке param2, так как передача в стек справа-налево.
Print param1, param2
Return param1 Mod param2
End Function
Function Example2 cdecl (param1 As Integer, param2 As Integer) As Integer
' Это функция CDECL, первый
параметр в стеке param1,
так как передача в стек слева-направо.
Print param1, param2
Return param1 Mod param2
End Function
Различия платформ
- На системах Windows, stdcall
процедуры имеют "@N" декорацию , добавляющую их
внутреннее\внешнее имя, где N — размер списка параметров в байтах.
Отличие от QB
См. также