在过程声明中指定
stdcall 样式调用约定
语法
说明
在过程声明中,
stdcall指定一个过程将使用
stdcall调用约定。在
stdcall调用约定中,任何参数将按照它们被列出的相反顺序传递(推入堆栈),即从右到左。程序不需要保留
EAX,
ECX或
EDX寄存器,并且必须在返回之前清理堆栈(弹出任何参数)。
stdcall不允许与可变参数过程声明一起使用(最后一个参数列为“
...”))。
stdcall是Windows上的默认调用约定,除非另外一个调用约定被
Extern Blocks之一明确指定或暗示。
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差别
参考