呼び出し規約オプション(BCC32)
BCC32 への移動
コンパイラで関数呼び出し用に生成される呼び出しシーケンスは呼び出し規約によって決まります。呼び出し規約はそれぞれ、スタックのクリーンアップ、パラメータの順序、名前の大文字/小文字、グローバル識別子のプレフィクス(アンダースコア)の扱い方が異なります。
IDE で[プロジェクト|オプション...]を選択し、[C++ コンパイラ]オプション ページでプロジェクトの呼び出し規約を設定することができます。また、特定の関数に呼び出し規約のキーワードを使用して、それらの関数に対してのみデフォルトの呼び出し規約をオーバーライドすることもできます。
呼び出し規約 | 説明 | キーワード | コマンドライン スイッチ |
---|---|---|---|
アンダースコアが生成され、名前の大文字/小文字が区別され、パラメータは右から左へプッシュされます。 関数では可変パラメータ リストを取ることができます(パラメータの数を固定する必要はありません)。 これが BCC32 のデフォルトの呼び出し規約になります。 |
| ||
アンダースコアは生成されず、名前は大文字で、呼び出し元の関数でスタックをクリーンアップする必要があり、パラメータは左から右にプッシュされます。 これにより、C の呼び出し規約を使用した場合と比べて、通常は、関数呼び出しのコードが小さくなり、実行が速くなります。関数には、正しい型の引数を正しい数だけ渡す必要があります。 |
| ||
適合する最初の 3 つの引数が(左から右に評価され)EAX、EDX、ECX に渡され、残りの引数は左から右にスタックにプッシュされます。 |
| ||
アンダースコアは生成されず、名前の大文字/小文字は元のままで、呼び出し先の関数でスタックをクリーンアップする必要があり、パラメータは右から左にプッシュされます。 関数には、正しい型の引数を正しい数だけ渡す必要があります。 |
|