stdcall 和cdecl 是使用兩種常見的程式設計中使用的常見程式設計呼叫約定語言。開發人員經常對其功能和相容性有疑問。
1.堆疊清理職責
當呼叫cdecl函數時,呼叫者負責在函數返回後清理堆疊。這是因為 cdecl 呼叫約定指定被呼叫者(被呼叫函數)不清理堆疊。編譯器知道函數的呼叫約定,相應地產生程式碼。
2.不匹配的呼叫約定
具有一種呼叫約定的函數呼叫具有另一種呼叫約定的函數通常不會出現問題。例如, stdcall 函數可以呼叫 cdecl 函數,反之亦然。但是,重要的是要確保編譯器不會發出與不匹配的呼叫約定相關的任何錯誤。
3.效能注意事項
stdcall 和 cdecl 呼叫約定之間通常沒有顯著的效能差異。編譯器根據呼叫約定高效產生堆疊清理和參數傳遞的程式碼。
以上是呼叫者何時負責 C 函數呼叫中的堆疊清理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!