免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: wwwsq
打印 上一主题 下一主题

530,继续抽某昏昏 [复制链接]

论坛徽章:
0
61 [报告]
发表于 2012-05-30 15:56 |只看该作者
回复 51# starwing83

据我所知,没有。
我觉得也不可能有。因为C/C++的语义有很大空子,哪些unspecified/implementation-defined behavior的东西被依赖了,最后会影响程序的可观察行为,编译器没法判断。
比如:

  1. #include <stdio.h>

  2. int x;

  3. int foo1(void)
  4. {
  5.   return x=1;
  6. }

  7. int foo2(void)
  8. {
  9.   return x=2;
  10. }

  11. void foo(int x, int y)
  12. {
  13. }

  14. int main(void)
  15. {
  16.   foo(foo1(), foo2());
  17.   printf("%d", x);
  18. }

复制代码
实际上这里有个foo的参数求值顺序这个unspecified behavior被依赖了。编译器怎么才能分析出这个程序的结果实际上被这个影响?
再算上多翻译单元的麻烦……加上链接器什么的应该也没这么大本事。
当然非strict conforming应该是能看出来的,-ansi -pedantic-errors什么的……

论坛徽章:
0
62 [报告]
发表于 2012-05-30 15:56 |只看该作者
wwwsq 发表于 2012-05-30 15:29
“x = y + z + 7865” 这个表达式在c99里面也没“明确直接的”规定。那么这个表达式,是否符合c99呢? ...


在缺乏x,y,z声明的前提下
这是一个伪问题

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
63 [报告]
发表于 2012-05-30 15:56 |只看该作者
walleeee 发表于 2012-05-30 15:51
回复 8# 塑料袋


是你搞不请左倾和右倾吧

论坛徽章:
0
64 [报告]
发表于 2012-05-30 15:58 |只看该作者
sacry 发表于 2012-05-30 15:45
wwwsq,见过许多说对标准不要当真的。

如果是对标准有很深的理解话,比如幻上帝这样的,




“int main()”这个问题,就属于c委员会比较羞涩的情况。

int数据类型的宽度,也是c委员会比较羞涩的情况。

我对c规范的理解确实没有幻同学那么精深,不过比某昏昏还是好一些的。


论坛徽章:
0
65 [报告]
发表于 2012-05-30 16:00 |只看该作者
KBTiller 发表于 2012-05-30 15:56
在缺乏x,y,z声明的前提下
这是一个伪问题



好吧,你这是找抽。。。

“int main()”如果是投影在墙上,gcc也确实无法编译墙上的光影。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
66 [报告]
发表于 2012-05-30 16:02 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
67 [报告]
发表于 2012-05-30 16:04 |只看该作者
本帖最后由 wwwsq 于 2012-05-30 16:07 编辑
pmerofc 发表于 2012-05-30 16:02
废话!
我说过C99禁止“int main()”的写法了吗



法律没有规定你九点钟可以出门,但是你九点钟出门是“完全符合法律”的。


论坛徽章:
0
68 [报告]
发表于 2012-05-30 16:08 |只看该作者
starwing83 发表于 2012-05-30 15:40
回复 49# 幻の上帝

额,有没有能判断一个程序是不是strict的编译器?



不过印象不深了
你如果需要我回头帮你查查

论坛徽章:
0
69 [报告]
发表于 2012-05-30 16:11 |只看该作者
wwwsq 发表于 2012-05-30 16:00
好吧,你这是找抽。。。

“int main()”如果是投影在墙上,gcc也确实无法编译墙上的光影。


找抽?
呵呵
刚好我也有这种感觉
不同的是我感觉找抽的另有其人

论坛徽章:
0
70 [报告]
发表于 2012-05-30 16:12 |只看该作者
本帖最后由 gtestm 于 2012-05-30 16:13 编辑

从 pm 评语,我只看出,他说这个写法过时,没说 C99 禁止“int main()”写法,只是说不符合 C99 精神。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP