【问题标题】:Why do new C books not adhere to the C99 standard?为什么新C书不符合C99标准?
【发布时间】:2011-01-19 04:44:28
【问题描述】:

我看过的几乎每一本(相对而言)关于 c 编程的新书似乎都不符合 C99 标准,或者他们在额外的章节中对此进行了介绍。来自 Java 背景,C99 标准使迁移(嗯,仍在迁移 ^^)对我来说更容易,这可能也适用于其他语言。

似乎 C99 还没有接触到大多数 C 开发人员。但为什么呢?

【问题讨论】:

  • 请举例。您正在阅读哪些新的 C 类书籍?

标签: c c99


【解决方案1】:

简答:编译器支持的安装速度很慢,而且 c 程序员是一个保守的人,他们会慢慢改变他们的行为。

【讨论】:

  • 也很聪明,没有被吸进去:)
【解决方案2】:

我强烈怀疑这主要是因为 MSVC 不尝试支持 C99,而且很可能永远不会。同一条船上有一些嵌入式编译器,但它们几乎没有足够的普遍性,以至于单独影响很大。 AFAIK 其他所有人至少都在尝试尽可能多地实现 C99。

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

此外,编写介绍性 C 文本可能非常困难和令人困惑,该文本开头说“好的,有两种不同的标准,我将使用三种不同颜色的文本:一种用于 C89,一种用于C99,两者各一”。写一整本书关于 C99,然后“收回”你在关于 C89 的附录中所说的很多内容,也可能比写关于 C89 的内容然后在关于 C99 的附录中添加它更难.

不过,所有的猜测。确实,您必须询问您正在阅读的书籍的作者(或者在某些情况下可能违背您所有的编程本能,并阅读前言 ;-))

【讨论】:

  • 如果你只想学习和写作一个标准,我不相信它必须是 C89。 gcc 支持为几乎所有可能相关的平台生成代码,那么为什么不直接使用现代标准 C99?
  • @R.如果您有更好的解释,请继续。我并不是说所有这些人都明智使用微软的 C 编译器,我只是说他们有足够的影响力。当我开始编写“可移植的 C 代码”时,我没有选择告诉某些客户切换编译器,或者将我的位与他们项目的其余部分分开编译。所以我用过C89。这有点像必须编写在 IE6 中工作的网页 - 告诉一部分观众他们是白痴只有这么多好处。至少 C89 实际上并不糟糕。
【解决方案3】:

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

我敢打赌,大多数使用 C 的项目根本不愿意切换到 C99,因为现有的大型代码库几乎没有任何好处,而且还有很大的潜力 em> 缺点。我曾在一家大型软件公司工作,该公司将编译器检查到代码旁边的源代码树中,并且从不为产品切换编译器。

【讨论】:

  • 但是他们使用哪些编译器来编译那些签入的编译器? :-)
  • @R:编译器是二进制签入,而不是源签入。
猜你喜欢
  • 2011-07-23
  • 2010-10-13
  • 1970-01-01
  • 2014-04-12
  • 2013-08-27
  • 2017-05-27
  • 2011-03-27
  • 2012-10-19
相关资源
最近更新 更多