_fastcall、__fastcall

提供: Appmethod Topics
移動先: 案内検索

キーワード(アルファベット順):インデックス への移動


カテゴリ

修飾子, 拡張キーワード

構文

<戻り値> _fastcall <関数名>(<パラメータ リスト>)
<戻り値> __fastcall <関数名>(<パラメータ リスト>)

説明

__fastcall 修飾子を使用すると、パラメータをレジスタで渡す関数を宣言できます。最初の 3 つのパラメータは、レジスタに収まれば、(左から右に)EAX、EDX、ECX で渡されます。パラメータが浮動小数点型または構造体型の場合、これらのレジスタは使用されません。

メモ: VCL クラスとフォーム クラスのすべてのメンバ関数は、__fastcall 規約に従う必要があります。
メモ: Clang ベースの C++ コンパイラでは、(下線が 2 つ付いた)__fastcall 形式のみサポートしています。

コンパイラでは、この呼び出し規約を、_cdecl や _pascal と同様に、新しい言語指定子と見なします。

_cdecl_pascal を使って宣言された関数は、スタックを使用してパラメータを渡すため、_fastcall 修飾子を付けることはできません。同様に、__fastcall 修飾子は、_export と一緒には使用できません。

コンパイルすると、__fastcall を指定した関数の名前の先頭にアットマーク(@)が付きます。このプレフィクスは、マングルされていない C 関数名にも、マングルされている C++ 関数名にも付けられます。

__fastcall の Microsoft C++ 形式の実装については、「__msfastcall」と「__msreturn」を参照してください。

メモ: __fastcall 修飾子は名前マングルの対象になります。詳細については、BCC32 の -VC オプションの説明を参照してください。

関連項目