呼び出し規約オプション(BCC32)

提供: RAD Studio
移動先: 案内検索

BCC32 への移動


コンパイラで関数呼び出し用に生成される呼び出しシーケンスは呼び出し規約によって決まります。呼び出し規約はそれぞれ、スタックのクリーンアップ、パラメータの順序、名前の大文字/小文字、グローバル識別子のプレフィクス(アンダースコア)の扱い方が異なります。

IDE で[プロジェクト|オプション...]を選択し、[C++ コンパイラ]オプション ページでプロジェクトの呼び出し規約を設定することができます。また、特定の関数に呼び出し規約のキーワードを使用して、それらの関数に対してのみデフォルトの呼び出し規約をオーバーライドすることもできます。

呼び出し規約 説明 キーワード コマンドライン スイッチ

C

アンダースコアが生成され、名前の大文字/小文字が区別され、パラメータは右から左へプッシュされます。

関数では可変パラメータ リストを取ることができます(パラメータの数を固定する必要はありません)。

これが BCC32 のデフォルトの呼び出し規約になります。

__cdecl

-pc
-p-

Pascal

アンダースコアは生成されず、名前は大文字で、呼び出し元の関数でスタックをクリーンアップする必要があり、パラメータは左から右にプッシュされます。

これにより、C の呼び出し規約を使用した場合と比べて、通常は、関数呼び出しのコードが小さくなり、実行が速くなります。関数には、正しい型の引数を正しい数だけ渡す必要があります。

__pascal

-p

レジスタ(fastcall)

適合する最初の 3 つの引数が(左から右に評価され)EAX、EDX、ECX に渡され、残りの引数は左から右にスタックにプッシュされます。

__fastcall

-pm
-pr

標準呼び出し

アンダースコアは生成されず、名前の大文字/小文字は元のままで、呼び出し先の関数でスタックをクリーンアップする必要があり、パラメータは右から左にプッシュされます。

関数には、正しい型の引数を正しい数だけ渡す必要があります。

__stdcall

-pm

関連項目