Delphi – What’s safecall

calling-conventiondelphi

I'm working on the creation of an ActiveX EXE using VB6, and the only example I got is all written in Delphi.

Reading the example code, I noticed there are some functions whose signatures are followed by the safecall keyword. Here's an example:

function AddSymbol(ASymbol: OleVariant): WordBool; safecall;

What is the purpose of this keyword?

Best Solution

Safecall passes parameters from right to left, instead of the pascal or register (default) from left to right

With safecall, the procedure or function removes parameters from the stack upon returning (like pascal, but not like cdecl where it's up to the caller)

Safecall implements exception 'firewalls'; esp on Win32, this implements interprocess COM error notification. It would otherwise be identical to stdcall (the other calling convention used with the win api)