函数调用约定

__cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:

  • 函数参数的压栈顺序
  • 调用者还是被调用者负责吧参数弹出栈
  • 产生函数修饰名的方法
压栈顺序栈参数清理函数修饰名称
__stdcall从右向左被调用函数
__cdecl从右向左调用者
__fastcall前两个参数使用ECX和EDX寄存器传递,
剩下的从右向左
被调用者

_beginthread需要__cdecl的线程函数地址,_beginthreadex和CreateThread需要__stdcall的线程函数地址。 一般WIN32的函数都是__stdcall。

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注