_cdecl _stdcall
2024-08-28 11:45:56
__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。
最新文章
- Qt 开启鼠标跟踪,自动激活mouseMoveEvent的问题
- Python中的绝对路劲和相对路径
- C/C++ 结构体 指针 简单输入输出
- MCV之行为
- poj3311 Hie with the Pie (状态压缩dp,旅行商)
- android开发,关于android app实现静默安装自己(系统签名)
- bzoj1601: [Usaco2008 Oct]灌水
- iOS 网络编程
- Apache MINA 框架之默认session管理类实现
- windows新的数据类型
- Sipdroid实现SIP(二): 呼叫请求
- 张高兴的 UWP 开发笔记:定制 ContentDialog 样式
- 我的";Hello World!";之旅
- kubernetes系列03—kubeadm安装部署K8S集群
- [深度学习] 权重初始化--Weight Initialization
- 四、XML语言学习(2)
- 迭代和JDB调试
- springboot项目搭建
- Postman和Selenium IDE开局自带红蓝BUFF属性,就问你要还是不要
- static, const 和 static const 变量的初始化问题
热门文章
- Mybatis-Spring整合Spring
- python 实例方法,类方法,静态方法
- StackOverflow之旅<;2>;------{HashMap和Hashtable的区别}
- 报 ";错误: 无法取消引用int"; 的问题解决纪录
- C#中?和??用法
- hdu-1162 Eddy&#39;s picture---浮点数的MST
- 【BZOJ4033】[HAOI2015] 树上染色(树形DP)
- 【BZOJ1076】[SCOI2008] 奖励关(状压DP)
- vuejs属性绑定和双向绑定
- [转] 防止js全局变量污染方法总结