_fastcall, __fastcall

From RAD Studio
Jump to: navigation, search

Go Up to Keywords, Alphabetical Listing Index


Category

Modifiers (C++), Keyword Extensions

Syntax

return-value _fastcall function-name(parm-list)
return-value __fastcall function-name(parm-list)

Description

Use the __fastcall modifier to declare functions that expect parameters to be passed in registers. The first three parameters are passed (from left to right) in EAX, EDX, and ECX, if they fit in the register. The registers are not used if the parameter is a floating-point or struct type.

Note: All VCL class member functions and form class member functions must use the __fastcall convention.
Note: The __fastcall form (with two underscores) is the only one supported by Clang-enhanced C++ compilers.

The compiler treats this calling convention as a new language specifier, along the lines of _cdecl and _pascal.

Functions declared using _cdecl or _pascal cannot have the _fastcall modifier because they use the stack to pass parameters. Likewise, the __fastcall modifier cannot be used together with _export.

The compiler prefixes the __fastcall function name with an at-sign ("@"). This prefix applies to both unmangled C function names and to mangled C++ function names.

For Microsoft C++ style __fastcall implementation, see __msfastcall and __msreturn.

Note: The __fastcall modifier is subject to name mangling. See the description of the BCC32 -VC option.

See Also