码迷,mamicode.com
首页 > 其他好文 > 详细

_cdecl _stdcall

时间:2014-08-18 20:26:12      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:style   color   os   strong   代码   工作   size   on   

__cdecl程序的压栈方式为C风格
__stdcall为PASCAL风格 
举个例子:
(1)   C函数  Fun1(a,b,c)
   函数调用时,参数压栈顺序为 c , b , a
(2)   PASCAL函数 Fun(a,b,c)
  函数调用时,参数压栈顺序为 a, b , c

==========================
         STDCALL 告诉编译器参数的传递约定。参数的传递约定是指参数传达时的顺序(从左到右或从右到左)和由谁恢复堆栈指针(调用者或被调用者)。在Win16下有两种约定:C 和 PASCAL。C 约定规定参数传递顺序是从右到左,即最右边的参数最先压栈,由调用者恢复堆栈指针。PASCAL约定和C约定正好相反,它规定参数是从左向右传递,由被调用者恢复堆栈。Win16采用了PASCAL约定, 因为PASCAL约定产生的代码量要小。当不知道参数的个数时,C约定特别有用。如在函数wsprintf () 中, wsprintf预先并不知道要传递几个参数,所以它不知道如何恢复堆栈。STDCALL是C约定和PASCAL约定的混合体,它规定参数的传递是从右到左,恢复堆栈的工作交由被调用者。Win32只用STDCALL约定,但除了一个特例,即:wsprintf。

_cdecl _stdcall,布布扣,bubuko.com

_cdecl _stdcall

标签:style   color   os   strong   代码   工作   size   on   

原文地址:http://www.cnblogs.com/minggeqiuzhi/p/3920277.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!