【发布时间】:2011-01-19 04:44:28
【问题描述】:
我看过的几乎每一本(相对而言)关于 c 编程的新书似乎都不符合 C99 标准,或者他们在额外的章节中对此进行了介绍。来自 Java 背景,C99 标准使迁移(嗯,仍在迁移 ^^)对我来说更容易,这可能也适用于其他语言。
似乎 C99 还没有接触到大多数 C 开发人员。但为什么呢?
【问题讨论】:
-
请举例。您正在阅读哪些新的 C 类书籍?
我看过的几乎每一本(相对而言)关于 c 编程的新书似乎都不符合 C99 标准,或者他们在额外的章节中对此进行了介绍。来自 Java 背景,C99 标准使迁移(嗯,仍在迁移 ^^)对我来说更容易,这可能也适用于其他语言。
似乎 C99 还没有接触到大多数 C 开发人员。但为什么呢?
【问题讨论】:
简答:编译器支持的安装速度很慢,而且 c 程序员是一个保守的人,他们会慢慢改变他们的行为。
【讨论】:
我强烈怀疑这主要是因为 MSVC 不尝试支持 C99,而且很可能永远不会。同一条船上有一些嵌入式编译器,但它们几乎没有足够的普遍性,以至于单独影响很大。 AFAIK 其他所有人至少都在尝试尽可能多地实现 C99。
在实践中没有太多理由不使用 C99 的选定功能,但如果您要学习和编写一个 C 标准,而且只有一个,那么它必须是 C89。
此外,编写介绍性 C 文本可能非常困难和令人困惑,该文本开头说“好的,有两种不同的标准,我将使用三种不同颜色的文本:一种用于 C89,一种用于C99,两者各一”。写一整本书关于 C99,然后“收回”你在关于 C89 的附录中所说的很多内容,也可能比写关于 C89 的内容然后在关于 C99 的附录中添加它更难.
不过,所有的猜测。确实,您必须询问您正在阅读的书籍的作者(或者在某些情况下可能违背您所有的编程本能,并阅读前言 ;-))
【讨论】:
在现有代码库上切换到新编译器的风险通常是未知的,但它可能会非常痛苦,只有当您有几个月的时间来消除任何错误/更改时才切换是最明智的。对于非常古老的代码库,有时最明智的做法是根本不切换。
我敢打赌,大多数使用 C 的项目根本不愿意切换到 C99,因为现有的大型代码库几乎没有任何好处,而且还有很大的潜力 em> 缺点。我曾在一家大型软件公司工作,该公司将编译器检查到代码旁边的源代码树中,并且从不为产品切换编译器。
【讨论】: