呼び出し規約: stdcall と cdecl
C および C の関数呼び出しの領域を詳しく調べると、プログラマは 2 つの異なる呼び出し規約に遭遇します。 : stdcall と cdecl。これらの規則の複雑さを解明するために、いくつかの差し迫った質問に取り組んでみましょう:
1. cdecl 関数のスタックのクリーンアップ
- コンパイラはその呼び出し規約を認識しているため、呼び出し元は cdecl 関数の呼び出し後にスタックをクリーンアップすることを知っています。
- 呼び出しサイトで
- コンパイラは、呼び出される関数の呼び出し規約に基づいてスタックのクリーンアップを処理する特定のバイナリ コードを生成します。
2.呼び出し規則の混合
- 関数間で stdcall と cdecl の呼び出し規則を混合することは、一般的に推奨されません。
- stdcall 関数が cdecl 関数を呼び出す場合 (またはその逆の場合)、コンパイラからエラーが発生したり、その結果の動作が予測不能になる可能性があります。
3.パフォーマンスの比較
- stdcall と cdecl の呼び出し規約の間には、注目すべきパフォーマンスの違いはありません。
以上が呼び出し規約: stdcall と cdecl の違いを解明するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。