我正在使用VB6创建一个ActiveX EXE,唯一的例子就是用Delphi编写。
阅读示例代码,我注意到有一些函数的签名后面是safecall关键字。以下是一个例子:
function AddSymbol(ASymbol: OleVariant): WordBool; safecall;
这个关键字的目的是什么?
Safecall从左到右传递参数,而不是pascal或从左到右
注册(默认)
使用safecall,过程或函数在返回时从堆栈中删除参数(如pascal,但不像cdecl那样由调用者决定)
Safecall实现异常“防火墙”; esp在Win32上,这实现了进程间COM错误通知。否则将与stdcall(与win api一起使用的其他调用约定)相同,