为什么新的C书不符合C99标准?

时间:2010-02-20 20:02:33

标签: c c99

几乎所有关于c编程的(相对)新书似乎都没有遵循C99标准,或者他们在一个额外的章节中介绍它。从Java背景来看,C99标准使我的迁移(嗯,仍然迁移^^)变得更加容易,这也可能适用于其他语言。

似乎C99尚未到达大多数C开发人员。但为什么呢?

3 个答案:

答案 0 :(得分:13)

简短回答:编译器支持安装速度慢,c程序员是保守的,他们慢慢改变行为。

答案 1 :(得分:11)

我强烈怀疑这主要是因为MSVC不会尝试支持C99,而且很可能永远不会。在同一条船上有一些嵌入式编译器,但它们几乎没有足够的共同之处。 AFAIK其他人至少都试图尽可能地实施C99。

在实践中没有太多理由不使用C99的选定功能,但如果你要学习并写入一个C标准,只有一个,那么它必须是C89。

此外,写一个介绍性的C文本可能会非常困难和令人困惑,首先说“好吧,有两个不同的标准,我将使用三种不同颜色的文本:一个用于C89,一个用于C99,两者都有“。也可能更难写一本关于整本书的C99,然后“收回”你在C89的附录中所说的很多,而不是写关于C89然后在关于C99的附录中添加它

尽管如此。真的,你不得不向作者询问你正在阅读的书籍(或者在某些情况下可能违反你所有的编程本能,并且阅读前言; - ))

答案 2 :(得分:3)

在现有代码库上切换到新编译器的风险通常是未知的,但它可能非常痛苦,只有在您有数月的时间来消除任何错误/更改时才切换它是最明智的。对于非常古老的代码库,有时最根本的是永远不会切换。

我愿意打赌大多数使用C的项目都不愿意切换到C99,因为现有的大型代码库和相当多的潜力几乎没有任何好处缺点。我在一家大型软件公司工作,它将编译器检查到代码旁边的源代码树中,并且永远不会切换产品的编译器。