免费注册 查看新帖 |

Chinaunix

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

[C] 请教一个基础问题——数组名减1是否可以 [复制链接]

论坛徽章:
0
211 [报告]
发表于 2009-12-21 15:26 |只看该作者

回复 #208 OwnWaterloo 的帖子

呵呵, 没错, 多谢~

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
212 [报告]
发表于 2009-12-21 16:01 |只看该作者

回复 #210 reiase 的帖子

直到目前也没有100%支持C++标准的编译器。
姑且将你偷换的概念 —— 将C++标准要求但没得到实现的特性比作特殊服务 —— 放在一边。


如果你真的需要某个特性, 那就用, 随之而来的代价就是移植到其他编译器的时候, 你可能会很痛苦。 —— 如果你不需要移植到其他编译器,那代价就小一些。
boost就是一个现实的例子。 boost那些功能的原理并不复杂, 造成boost源代码像天书一般的原因就是因为boost需要应付大量参差不齐的编译器。

同时, 这也是一种解决问题的途径:
如果你依赖标准之外的行为、或者对对标准实现参差不齐的行为, 去找提供这方面功能的跨平台库, 而不是什么都自己重头写。
让库去弥补不同平台上的差异(这是个体力活), 而你可以得到一个相对稳定的编程环境。


如果不用该特性也可以编程, 那就别用。
现实的例子: google coding style, 还有ff那个什么M来着? 他们编码风格也是对C++特性的使用做出了诸多限制, 主要考虑的就是可移植性。嗯, 还有qt(有篇《qt为什么不使用模板》的文章)
这3家不使用"特殊"服务的, 不也活得挺滋润的?

论坛徽章:
0
213 [报告]
发表于 2009-12-21 16:12 |只看该作者
原帖由 zx_wing 于 2009-12-16 10:13 发表

兄弟这个地方理解有点问题。

标准指的是不产生溢出,是指程序员明白他所做的操作的执行结果是什么。对于编译器来,说数组指针减1只是个指针运算而已,所以只要程序员明白运算后的指针指向的是合法的位置, ...


zx_wing正解,操作数组程序员要知道自己在做什么,指针指到外边是不做溢出的,比如经典的strcopy的bug,在实践中你知道你是否在界内操作就能确保你的程序正确,至于lz现在讨论的已经不是一个实际意义的问题了,已经成了纯抽象的方法论讨论的东西了,毫无意义,已经脱离了汇编和C编译器的实现!

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

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

论坛徽章:
0
216 [报告]
发表于 2009-12-22 14:28 |只看该作者
原来元凶在这里啊!

论坛徽章:
0
217 [报告]
发表于 2009-12-22 14:37 |只看该作者

回复 #216 升腾 的帖子

论坛徽章:
0
218 [报告]
发表于 2009-12-24 16:24 |只看该作者

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

论坛徽章:
0
220 [报告]
发表于 2009-12-26 15:19 |只看该作者
当然可以!
欢迎你进入黑客世界。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP