2008/02/07

Difference between __cdecl and __stdcall

在呼叫函式的前,程式必需先將參數放到stack裡,隨後在函式執行完後,這些參數若是由caller負責清除則稱為__cdecl,反之若是callee負責則為__stdcall。

他們有以下的不同點及討論:
  1. __stdcall的呼叫,程式大小會比較小一點。
  2. printf這類不定量的參數的函式,只能使用__cdecl的呼叫

Reference.
  1. __cdecl and __stdcall
  2. Intel x86 Function-call Conventions - Assembly View
  3. Using Win32 calling conventions

No comments: