stdcall 和cdecl 是程式設計中使用的兩種常見呼叫約定語言。開發人員經常對其功能和相容性有疑問。
1。堆疊清理職責
當呼叫cdecl函數時,呼叫者負責在函數傳回後清理堆疊。這是因為 cdecl 呼叫約定指定被呼叫者(被呼叫函數)不清理堆疊。編譯器知道函數的呼叫約定,相應地產生程式碼。
2。不符的呼叫約定
具有一種呼叫約定的函數呼叫具有另一種呼叫約定的函數通常不會出現問題。例如,stdcall函數可以呼叫cdecl函數,反之亦然。但是,重要的是要確保編譯器不會發出與不匹配的呼叫約定相關的任何錯誤。
3。效能注意事項
stdcall 和 cdecl 呼叫約定之間通常沒有顯著的效能差異。編譯器根據呼叫約定有效地產生堆疊清理和參數傳遞的程式碼。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3