__Fastcall
Specifies the Fastcall calling convention in a procedure declaration
Syntax
`
declare Sub name __Fastcall [Overload] [Alias "alias"] ( parameters )
declare Function name __Fastcall [Overload] [Alias "alias"] ( parameters ) [ ByRef ] As return_type
Sub name [__Fastcall] [Overload] [Alias "alias"] ( parameters )
Function name [__Fastcall] [Overload] [Alias "alias"] ( parameters ) [ ByRef ] As return_type
`
Description
`Fastcall` is a calling convention for x86 targets where the first and second integer arguments are passed in the in `ECX` and `EDX` registers respectively instead of on the stack. All other arguments are passed right to left and callee cleans up the stack (like Stdcall).
`Fastcall` can be specified at both the declaration and the definition.
If a procedure definition has a declaration (with calling convention explicit or by default) and the definition does not explicitly specify a calling convention, then the calling convention is implied by the declaration.
Note: Default calling convention on win32 x86 inside an extern "c++" block for non-static member procedures is Thiscall.
Example
`
Extern "c++"
Declare Function Example __Fastcall (param1 As Long, param2 As Byte, param3 As LongInt, param4 As String) As Integer
End Extern
`
Version

- Since fbc 1.10.0.

Differences from QB

- New to FreeBASIC

See also

- `cdecl`, `stdcall`, `Thiscall`
- `Declare`
- `Sub`, `Function`