差異處
這裏顯示兩個版本的差異處。
下次修改 | 前次修改 | ||
cpp:dll:windows:questions [2014/10/03 17:05] 127.0.0.1 外部編輯 |
cpp:dll:windows:questions [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 11: | 行 11: | ||
* Windows程式設計 - 王艷平 編著 | * Windows程式設計 - 王艷平 編著 | ||
===== fastcall、cdecl與stdcall ===== | ===== fastcall、cdecl與stdcall ===== | ||
- | 這三個宣告叫呼叫慣例(Calling Conventions)。三者將參數放入Stack的順序接為由左至右,但還有以下差異存在: | + | 這三個宣告叫呼叫慣例(Calling Conventions)。三者將參數放入Stack的順序皆為由左至右,但還有以下差異存在: |
* 暫存器: fastcall會將第一個參數與第二個參數放入暫存器中,放在暫存器存取速度會比在stack中快,顧名思義它叫fastcall。cdecl與stdcall只會使用到stack。 | * 暫存器: fastcall會將第一個參數與第二個參數放入暫存器中,放在暫存器存取速度會比在stack中快,顧名思義它叫fastcall。cdecl與stdcall只會使用到stack。 | ||
* 清除Stack的時機: cdecl是由function caller清除stack;fastcall與stdcall則是由callee清除。也因此cdecl允許於不定參數。 | * 清除Stack的時機: cdecl是由function caller清除stack;fastcall與stdcall則是由callee清除。也因此cdecl允許於不定參數。 |