| 約定 | 參數傳遞 | 棧清理方 | 名字修飾 | 典型用途 |
|---|---|---|---|---|
__cdecl | 右→左壓棧 | 調用者 | 前綴 _ | C/C++ 預設、可變參數 |
__stdcall | 右→左壓棧 | 被調用者 | 前綴 _ + @n | Win32 API、COM |
__fastcall | 前兩個 DWORD 用 ECX/EDX,其餘壓棧 | 被調用者 | 前綴 @ + @n | 高頻小函數優化 |
thiscall | this 在 ECX,其餘右→左 | 被調用者 | 編譯器內部 | C++ 非靜態成員函數 |
printf 等),因調用者知曉參數大小才能清理棧。/Gd)。PASCAL 約定。WINAPI 宏展開為 __stdcall。_Func@12(12 字節參數)。@Func@12。this 指針放 ECX,不可手動指定(非關鍵字)。naked callESI/EDI/EBX/EBP)。__declspec(naked),用於手寫組合語言或極致優化。__stdcall void Func(int a);/Gz /Gd /Gr)。__stdcall(配合 WINAPI)。__cdecl 即可。__fastcall 測試性能。