- 论坛徽章:
- 2
|
本帖最后由 OwnWaterloo 于 2011-10-13 16:45 编辑
回复 51# 幻の上帝
关于权威的概念我理解可能有偏差。
而结论不变 —— 我依然认为这里规定不够好。
我也不会去刻意打破这里的规矩。也许没有 _z 的代码无法检测出不合规矩的C++实现,但总之这个规矩也不是由我打破的……
>> 为了使3退化到1或者2,你可能需要找其它的文档来确定它精确的行为,尤其是要考虑代码的兼容性时。
>> 许多情形下比一贯遵守ISO C++更费力
有些情况是, 但有些情况不是……
这个尺度我觉得自己还是能把握的……
比如 使用 z_ 而非 _z 就是这样一种情况, 我依然是在换一种方式遵守ISO C++。
不需要比使用 _z 查看更多的文档, 兼容性应该不会比 _z 更差。
再比如 —— C++的例子想不出来了,来个C的 —— extern inline 的行为。
c89没有inline, 但一般都有扩展。
c99有,但只有static inline的行为是确定的。
extern inline在gcc的不同版本里行为都不同…… 我了个去……
但是我不需要查询 gcc 3 与 gcc 4在这方面的详细文档, 我直接不用 extern inline 不就完了……
static inline 相对而言在各种编译器实现中更稳定, 我就用它好了……
>> 等完美支持ISO C++的编译器出现……吧,如果你有足够的耐心。
一个问题就是, 代码由谁编译?
我可能有耐心等到支持更好的编译器。
但代码不一定都是由我编译。
可能会有人想用更低版本的编译器来编译代码。
我觉得将自己的C++代码以源代码形式给予,要求对方有vc8以及gcc3以上比较合理。
而vc10,gcc4.5, 在我认识的人当中没有哪怕一个人有的……
C代码可以下降到vc6与gcc2…… 所以需要发布的东西我喜欢用C…… 连这俩编译器都没有的人,我真是有心无力了……
如果是写来自己用,那当然就可以用我想用的编译器了。
这是我说的"能控制编译器的意思"。
>> 但是即便没有被完美支持,使用已经验证过的当前被较广泛支持的可用特性会很不方便么(export这类奇葩除外)。
对了嘛…… 使用已经验证过的当前被广泛支持的可用特性, 你也知道有一些属于支持得不够好的。
我们没有质上的区别, 而是量上的区别。
只是我希望代码对编译器的要求更低一些, 使用的特性被支持得更广泛一些, 可用性更高一些。
当然,代码写起来会更痛苦一些…… 自虐一些……
>> 在精确控制实现的行为方面,C/C++这方面是一丘之貉,因为实现有太多的自由,且实现的数量不少。
>> 所以控制不了编译器的情况下顶多干脆C/C++都不用得了……= =
想规定出所有细节并让程序员依赖这些细节会让双方终止陷入泥潭。
定义一组精简、但完善的规则 —— 标准的目的 —— 双方都尽可能遵守,这样双方才能得到发展,这才是正道。
less is more...
注意完善,总会有办法让你完成需要的功能,不至于完全不能用。
比如 signed 溢出的行为, 当不关心时就没问题; 当关心时语言有提供 unsigned 。
当不关心int长度时直接用, 当关心时用 intXX_t, int_fastXX_t 等等。 |
|