几乎我所见过的关于C编程的新书似乎都没有遵循C99标准,或者他们在额外的章节中涵盖了它。从Java背景出发,C99标准使得我的迁移(嗯,仍在迁移^^)更加容易,这可能也适用于其他语言。 看起来C99还没有被大多数C开发人员接受。但是为什么呢?
我强烈怀疑这主要是因为MSVC不尝试支持C99,而且很可能永远不会支持。还有一些嵌入式编译器也是如此,但它们并不太普遍,以至于单独考虑它们没有太大关系。据我所知,其他人都至少在努力尽可能实现C99。在实践中,选择使用C99的某些特性是没有什么理由的,但如果你只学习和编写一个C标准,那么必须是C89。此外,编写一本介绍C的书非常困难和混淆,因为它起始就确定了两个不同的标准,并使用三种不同颜色的文本:一个用于C89,一个用于C99,一个同时适用于两者。对于整本书来说,讲述C99比讲述C89更加困难,然后在附录中“收回”大量有关C89的内容。而是先讲述C89再在附录中添加关于C99的内容,这样做可能更容易些。尽管如此,这只是我的猜测。实际上,您必须询问您正在阅读的书籍的作者(或者在某些情况下违背所有编程直觉,“阅读前言”;-))。
在现有代码库中切换到新编译器的风险通常是未知的,但这可能会非常痛苦,最明智的做法是只在您有几个月的时间来摆脱任何错误/更改时才进行切换。对于非常老的代码库,有时最明智的做法是根本不要切换。我敢打赌,使用C语言的大多数项目都不愿意完全切换到C99,因为对于大型现有代码库来说,好处几乎没有,而潜在的弊端却很多。我曾在一个大型软件公司工作,该公司将编译器与代码一起检入源代码库,并且永远不会为产品切换编译器。