__Fastcall

Specifies the Fastcall calling convention in a procedure declaration

Syntax
	declare KeyPgSubSub name __Fastcall [KeyPgOverloadOverload] [KeyPgAliasAlias "alias"] ( parameters )
	declare KeyPgFunctionFunction name __Fastcall [KeyPgOverloadOverload] [KeyPgAliasAlias "alias"] ( parameters 
	) [ KeyPgByrefFunctionByRef ] KeyPgAsAs return_type

	KeyPgSubSub name [__Fastcall] [KeyPgOverloadOverload] [KeyPgAliasAlias "alias"] ( parameters )
	KeyPgFunctionFunction name [__Fastcall] [KeyPgOverloadOverload] [KeyPgAliasAlias "alias"] ( parameters ) [ 
	KeyPgByrefFunctionByRef ] KeyPgAs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 KeyPgThiscall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
	* KeyPgCdeclcdecl, KeyPgStdcallstdcall, KeyPgThiscallThiscall
	* KeyPgDeclareDeclare
	* KeyPgSubSub, KeyPgFunctionFunction

