stdcall と cdecl は、プログラミングで使用される 2 つの一般的な呼び出し規約です。言語。開発者は、機能や互換性についてよく質問します。
1.スタックのクリーンアップの責任
cdecl 関数が呼び出された場合、呼び出し元は関数が戻った後にスタックをクリーンアップする責任があります。これは、cdecl 呼び出し規約が、呼び出し先 (呼び出された関数) がスタックをクリーンアップしないことを指定しているためです。コンパイラは、関数の呼び出し規約を認識して、それに応じてコードを生成します。
2.呼び出し規約の不一致
通常、ある呼び出し規約を持つ関数が別の呼び出し規約を持つ関数を呼び出すことは問題ありません。たとえば、stdcall 関数は cdecl 関数を呼び出すことができ、その逆も同様です。ただし、コンパイラが呼び出し規約の不一致に関連するエラーを発行しないようにすることが重要です。
3.パフォーマンスに関する考慮事項
通常、stdcall と cdecl の呼び出し規約の間に大きなパフォーマンスの違いはありません。コンパイラは、呼び出し規約に応じて、スタックのクリーンアップとパラメータの受け渡しのためのコードを効率的に生成します。
以上がC の関数呼び出しで呼び出し元がスタックのクリーンアップを担当するのはいつですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。