社区
C语言
帖子详情
C参数入栈顺序
自由建客
2006-12-27 01:12:29
C为何非要搞个从右往左的顺序,我实在想不出来这在技术上有什么优势。如果讲是为了实现可变参数的话,从左往右也可以呀,Pascal不就是如此嘛。像下面这样的函数调用,往往容易让人把语意弄错。f(g(&x),x),本意是想让g()先改变一下x。
...全文
256
7
打赏
收藏
C参数入栈顺序
C为何非要搞个从右往左的顺序,我实在想不出来这在技术上有什么优势。如果讲是为了实现可变参数的话,从左往右也可以呀,Pascal不就是如此嘛。像下面这样的函数调用,往往容易让人把语意弄错。f(g(&x),x),本意是想让g()先改变一下x。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
珍惜生命远离CPP
2006-12-27
打赏
举报
回复
从右到左挺好的嘛
晨星
2006-12-27
打赏
举报
回复
我知道,所以我前面说“倒过来写”。
那样,现在的printf就需要这样写了:
printf("abcd", 3.14, 5, "%i, %f, %s");
我觉得不习惯,很容易把人倒腾糊涂。
自由建客
2006-12-27
打赏
举报
回复
to steedhorse(晨星)
从右往左把标示参数个数的参数放在最左,从左往右则示参把标数个数的参数放在最右。
C: printf() Pascal: write() writeln()
nasi00
2006-12-27
打赏
举报
回复
同意steedhorse(晨星),不要写出对编译器的实现有依赖的代码,这种bug很难追
todototry
2006-12-27
打赏
举报
回复
处理printf()
之类参数个数不确定的函数,需从右至左参数入栈
因为事先无法知道参数个数,只有执行函数的调用的时候才能计算出来
晨星
2006-12-27
打赏
举报
回复
从左往右怎么实现可变参数?把参数顺序都倒过来写吗?
还有,我觉得写出对参数压栈顺序有依赖的代码本身就不是一个好风格,拆成两条明确的语句不好吗?
最后,在你所举的那个例子中,按照你所表达的意思,那是跟参数的求值顺序有关,而不是跟压栈顺序有关。参数的求值顺序和压栈顺序是不是一码事。C语言的参数求值顺序也是不确定的,由编译器设计者自己看着办。
kangji
2006-12-27
打赏
举报
回复
不太懂编译技术,关注
从右往左是iso规定的么?ISO应该只规定语法吧,至于编译器实现跟编译器生成厂家有关系
Linux C函数库
参数
手册(PDF)
Linux C函数库
参数
手册(清晰版)包含Linux下C开发接口函数,方便做linux C开发的人员
C语言中函数
参数
的
入栈
顺序
详解及实例
主要介绍了C语言中函数
参数
的
入栈
顺序
详解及实例的相关资料,需要的朋友可以参考下
浅谈C语言函数调用
参数
压栈的相关问题
参数
的
入栈
顺序
主要看调用方式,一般来说,__cdecl 和__stdcall 都是
参数
从右到左
入栈
。 看下面的代码: #include int test(int a, int b) { printf("address of a %x.\n", &a); printf("address of b %x.\n", &...
va_start & va_arg.vsdx
① va_start宏中,通过&(A)取得的就是...③ 由于va_start & va_arg的运行过程高度依赖
参数
入栈
的
顺序
(只有函数
参数
是从右向左
入栈
时,根据"sdc"字符串的解析才是正确的),这就体现了对编译器设置
入栈
规范的重要性。
浅析C/C++中的可变
参数
与默认
参数
C/C++支持可变
参数
个数的函数定义,这一点与C/C++语言函数
参数
调用时
入栈
顺序
有关,首先引用其他网友的一段文字,来描述函数调用,及
参数
入栈
: ———— 引用开始 ———— C支持可变
参数
的函数,这里的意思是C支持...
C语言
69,335
社区成员
243,078
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章