c stdcall pascal cdecl-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 3977120
  • 博文数量: 536
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(536)

文章存档

2024年(3)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: c/c

2008-02-28 18:14:26

这三个参数都是告诉编译器参数的传递约定,参数的传递约定是指参数的传递顺序(从左到右还是从右到左)和由谁来恢复堆栈指针(调用者或者是被调用者),在 win16下有两种约定: c 和 pascal。
   c约定规定参数传递顺序是从右到左,即最右边的参数最先压栈,由调用者恢复堆栈指针。
   pascal约定和c约定正好相反,它规定参数是从左向右传递,由被调用者恢复堆栈。
   stdcall是c约定和pascal约定的混合体,它规定参数的传递是从右到左, 恢复堆栈的工作交由被调用者。win32只用stdcall约定, 但除了一个特例, 即: wsprintf。

win16采用了pascal约定, 因为pascal约定产生的代码量要小。当不知道参数的个数时,c约定特别有用。


调用约定           压参数入栈顺序     把参数弹出栈者         函数修饰名(calling convention)
-------------------------------------------------------------------------
__cdecl           右->左           调用者                _function    
__fastcall        右->左           被调用者              @function@nnn     
__stdcall         右->左           被调用者              _function@nnn
__pascal          左->右           被调用者              _function@nnn
-------------------------------------------------------------------------

部分来源:
阅读(2165) | 评论(0) | 转发(0) |
0

上一篇:gcc学习

下一篇:[转]人生规划

给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图