免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 42103 | 回复: 96

[C] printf参数入栈顺序和编译器相关,还是都是从右至左? [复制链接]

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2007-10-31 22:04 |显示全部楼层
在GCC4.0和VS2005中好像都是从右至左,有哪个编译器是从左至右阿?

[ 本帖最后由 Godbach 于 2007-10-31 22:13 编辑 ]

论坛徽章:
0
发表于 2007-10-31 22:05 |显示全部楼层

不清楚
不好说
没研究

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2007-10-31 22:07 |显示全部楼层
呵呵,兄台最近很活跃阿。对了,你不是在Solaris下马,用Sun的编译器试一把阿

原帖由 anthony1983 于 2007-10-31 22:05 发表

不清楚
不好说
没研究

论坛徽章:
0
发表于 2007-10-31 22:10 |显示全部楼层
原帖由 Godbach 于 2007-10-31 22:04 发表
在GCC4.0和VS2005中好像都是从右至左,有哪个编译器是从左至右阿?

俺也想知道哪个编译器从左至右。
PS:并非printf是这个顺序,函数调用参数入栈都是这个顺序

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2007-10-31 22:12 |显示全部楼层
原帖由 zx_wing 于 2007-10-31 22:10 发表

俺也想知道哪个编译器从左至右。
PS:并非printf是这个顺序,函数调用参数入栈都是这个顺序


对阿,好像C下的都是从右至左入栈。之前看到类似的贴子,大家都说和编译器有关,所以很想知道是那个编译器。或者本身就是从右至左,而和编译起无关。

论坛徽章:
0
发表于 2007-10-31 22:12 |显示全部楼层
原帖由 Godbach 于 2007-10-31 22:07 发表
呵呵,兄台最近很活跃阿。对了,你不是在Solaris下马,用Sun的编译器试一把阿


呵呵,sparc寄存器那么多,估计要用到栈传参不知道要写多少个参数,除非用的是open solaris,跑走intel的x86下:)

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2007-10-31 22:14 |显示全部楼层
之前倒是装过Solaris x86的虚拟机,只是配置而已,没来得及写程序呢

论坛徽章:
0
发表于 2007-10-31 22:14 |显示全部楼层
原帖由 Godbach 于 2007-10-31 22:07 发表
呵呵,兄台最近很活跃阿。对了,你不是在Solaris下马,用Sun的编译器试一把阿



Sun的编译器没用过,而且Solaris9也不自带Sun的编译器,只有gcc,
入栈顺序都是右到左的,为了适应可变参数函数才这样做的。

论坛徽章:
0
发表于 2007-10-31 22:14 |显示全部楼层
我在想,如果不从右到左,那么在printf内部怎么判断这次调用有好多个参数呢?

论坛徽章:
0
发表于 2007-10-31 22:15 |显示全部楼层
原帖由 zx_wing 于 2007-10-31 22:12 发表

呵呵,sparc寄存器那么多,估计要用到栈传参不知道要写多少个参数,除非用的是open solaris,跑走intel的x86下:)

  公司可能用X86么
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP