其实这些特性早就被gcc为C做的扩展中使用了。
是啊,GCC是做了,但还是有些少见的编译器没有,既然这个帖子是讨论规范的问题,这个就要考虑进来
不要死抠C标准来讨论编译器及问题,无论是C89也好,还是C99也好,你死抠着C标说话毫无意义,试问天下那一款C编译器是完全死抠着C标来做的?没有,在语法上都有不同程度的不支持及扩展。如同我们说普通话一样,南方有几人能说标准?北方又有几人能说标准?是不是说的都不是普通话?是不是都不要说话了?能交流就是普通话!但是能说得更为标准当然是好的。
其实我觉得重点主要是两个
1、在大部分的编译器上可以没有问题的运行(如果是在某个系统上的某个编译器无法运行的话,单独举例子说明)
2、代码读起来比较清晰,使人一看就知道你想要表达的意思。
虽然说不一定要死抠标准,但在一些易出错和产生分歧的地方以标准来决定。
int main(a,b,c,d,e)标准不标准?
你既然支持用int main(),为什么不支持用/**/替换//,他们的问题其实是一样的,只不过不支持void main()的编译器比不支持//的编译器多的多的多,但不能因为这样就放弃讨论,嵌入式的编译器我们不用讨论到底有哪些支持什么,又不支持什么,我们只要知道有不支持就行,然后我们就些所有编译器都支持的就行
和标准冲突的过时的要废弃?放弃什么.放弃编译器?既然能选择这样的编译器大多都是只能选择这样的编译器,与其考虑这个,不如编写通用的代码要实际的多
[此贴子已经被作者于2007-9-20 17:51:25编辑过]
其实我觉得重点主要是两个
1、在大部分的编译器上可以没有问题的运行(如果是在某个系统上的某个编译器无法运行的话,单独举例子说明)
2、代码读起来比较清晰,使人一看就知道你想要表达的意思。
虽然说不一定要死抠标准,但在一些易出错和产生分歧的地方以标准来决定。
第一条不实际,没有人知道到底有多少种情况的特殊的,考虑这个问题,不如看看到底怎么写是可以都能运行的,如果一个C的标准上注明只能适用什么机器,那这个标准对C来说就是废纸,因为C的特点就是可移植,照这种标准写C,不就是限制C的用处,那还何必定这个标注
[此贴子已经被作者于2007-9-20 17:57:02编辑过]