新的 C 书籍为什么不遵循 C99 标准?

5
几乎我所见过的关于C编程的新书似乎都没有遵循C99标准,或者他们在额外的章节中涵盖了它。从Java背景出发,C99标准使得我的迁移(嗯,仍在迁移^^)更加容易,这可能也适用于其他语言。

看起来C99还没有被大多数C开发人员接受。但是为什么呢?


请举例说明。你正在阅读哪些新的C语言书籍? - Bill the Lizard
3个回答

13

简短回答: 编译器支持安装缓慢,而且C语言程序员是相对保守的群体,在改变自己的行为上较为缓慢。


2
也是一群聪明的人,不会被欺骗 :) - Matt Joiner

11
我强烈怀疑这主要是因为MSVC不尝试支持C99,而且很可能永远不会支持。还有一些嵌入式编译器也是如此,但它们并不太普遍,以至于单独考虑它们没有太大关系。据我所知,其他人都至少在努力尽可能实现C99。
在实践中,选择使用C99的某些特性是没有什么理由的,但如果你只学习和编写一个C标准,那么必须是C89。
此外,编写一本介绍C的书非常困难和混淆,因为它起始就确定了两个不同的标准,并使用三种不同颜色的文本:一个用于C89,一个用于C99,一个同时适用于两者。对于整本书来说,讲述C99比讲述C89更加困难,然后在附录中“收回”大量有关C89的内容。而是先讲述C89再在附录中添加关于C99的内容,这样做可能更容易些。
尽管如此,这只是我的猜测。实际上,您必须询问您正在阅读的书籍的作者(或者在某些情况下违背所有编程直觉,“阅读前言”;-))。

我不认同这种观点,即如果你只打算学习和编写一种标准,那么它必须是C89。gcc支持为几乎所有可能相关的平台生成代码,那么为什么不使用现代标准C99呢? - R.. GitHub STOP HELPING ICE
1
@R。如果你有更好的解释,请说吧。我并不是说所有那些人都明智地使用微软的C编译器,我只是说有足够多的人会产生影响。当我开始编写“可移植的C代码”时,我没有选择告诉某些客户切换编译器或将我的代码与其项目的其他部分分开编译。所以我使用了C89。这有点像编写在IE6中运行的网页-告诉一部分受众他们是白痴并没有太多好处。至少C89并不是真的很糟糕。 - Steve Jessop

3
在现有代码库中切换到新编译器的风险通常是未知的,但这可能会非常痛苦,最明智的做法是只在您有几个月的时间来摆脱任何错误/更改时才进行切换。对于非常老的代码库,有时最明智的做法是根本不要切换。
我敢打赌,使用C语言的大多数项目都不愿意完全切换到C99,因为对于大型现有代码库来说,好处几乎没有,而潜在的弊端却很多。我曾在一个大型软件公司工作,该公司将编译器与代码一起检入源代码库,并且永远不会为产品切换编译器。

但是他们用哪些编译器来编译那些已检入的编译器呢? :-) - R.. GitHub STOP HELPING ICE
@R:编译器是二进制检入,而不是源代码检入。 - John Knoeller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接