__stdcall 和 __cdecl 的区别

来源:互联网 发布:网络网名吸引女孩子 编辑:程序博客网 时间:2024/04/28 01:12

  _cdecl      
          C/C++的缺省调用协定,由调用者清理堆栈,这就是C/C++中可以使    
          用可变参数的函数的原因,所有参数自右至左入栈,生成的代码中    
          函数名有一个_(下划线)作前缀。    
  _stdcall    
          Win32   API的调用协定,由被调用的函数清理堆栈,所有参数自右至    
          左入栈,生成的代码中函数名有一个_(下划线)作前缀一个@和参数总    
          字节数(十进制)作後缀。它不支持可变参数,但它产生的代码比    
          _cdecl的短,因为没有每次调用後的清理堆栈的代码 

 fastcall   是把函数参数列表的前三个参数放入寄存器eax,edx,ecx,其他参数压栈。