2010-08-25 70 views
1

我在C语言中的经验主要来自第二版The C Programming language,这是一本很老的书。 C自发布以来发生了哪些变化,我应该避免哪些过时或弃用的函数?自“The C Programming Language”以来发生了什么变化

+0

为什么标记为'kr-c'? K&R2书对待ANSI C,而不是K&R C. – schot 2010-08-25 17:47:50

+0

类似的问题:http://stackoverflow.com/questions/2892951/list-of-deprecated-c-functions这里有很好的答案。看看* KennyTM *的第一条评论。 – karlphillip 2010-08-25 17:17:09

回答

5

您还可以查看自从出现的'C'规格(如C99)。这些规格将表明他们已经添加/删除/改变了与之前的标准相关的内容。

http://en.wikipedia.org/wiki/C_%28programming_language%29

http://en.wikipedia.org/wiki/C99

http://en.wikipedia.org/wiki/C89_%28C_version%29

如果你想看到什么样的未来 'C' 成立,看看C1X,这是即将到来的 'C' 的标准。

http://en.wikipedia.org/wiki/C1x

+0

+1这些也是很好的方向。 – karlphillip 2010-08-25 17:40:38

2

如果你能抓住ISO C99标准的复印件,包括前言,因为C90主要变化一个漂亮的2页的列表。

+0

在互联网上有一个C99草案可用作PDF。谷歌“C99 pdf”,它应该是第一个结果。 – 2010-08-25 18:31:08

0

没有太多变化。对于大多数实际用途,K & R2中描述的语言仍然是使用的语言。 1999年有了一个新的C标准,但是这个标准并没有像1989年的标准那样得到成功和广泛的采用(K & R2也描述过)。

在C99中最重要的改变,可能破坏现有的方案是:

  • int类型的声明中隐含的假设已被删除。只要确保你总是明确地指定你的函数和变量的类型。
  • 不鼓励事先声明调用函数。只要确保在使用之前声明所有功能,最好使用原型。

这两个都是从标准前几天开始搁置,并且长期以来一直被认为是不好的做法。

要避免的一个功能是(并且一直是)gets()

相关问题