我在C语言中的经验主要来自第二版The C Programming language,这是一本很老的书。 C自发布以来发生了哪些变化,我应该避免哪些过时或弃用的函数?自“The C Programming Language”以来发生了什么变化
回答
您还可以查看自从出现的'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' 的标准。
+1这些也是很好的方向。 – karlphillip 2010-08-25 17:40:38
如果你能抓住ISO C99标准的复印件,包括前言,因为C90主要变化一个漂亮的2页的列表。
在互联网上有一个C99草案可用作PDF。谷歌“C99 pdf”,它应该是第一个结果。 – 2010-08-25 18:31:08
没有太多变化。对于大多数实际用途,K & R2中描述的语言仍然是使用的语言。 1999年有了一个新的C标准,但是这个标准并没有像1989年的标准那样得到成功和广泛的采用(K & R2也描述过)。
在C99中最重要的改变,可能破坏现有的方案是:
int
类型的声明中隐含的假设已被删除。只要确保你总是明确地指定你的函数和变量的类型。- 不鼓励事先声明调用函数。只要确保在使用之前声明所有功能,最好使用原型。
这两个都是从标准前几天开始搁置,并且长期以来一直被认为是不好的做法。
要避免的一个功能是(并且一直是)gets()
。
- 1. The C Programming Language 1.9
- 2. The C programming language 2. ed。问题
- 3. 来自Microsoft的VHDX规范发生了什么变化?
- 4. 追踪自一段时间以来数据发生了什么变化
- 5. 文档发生了什么变化?
- 6. FMXBroadcastReceiver(Android)在Delphi 10西雅图中被破解了吗?自XE7以来发生了什么变化?
- 7. .NET 4.5中的内存模型发生了什么变化?
- 8. TMP环境变量发生了什么变化?
- 9. 当发送QStandardItemModel itemChanged时发生了什么变化
- 10. 为什么离开函数时节点值发生了变化?
- 11. Unity Test Runner选项发生了什么变化?
- 12. 检测HTML文本框中发生了什么变化
- 13. pip的-e选项发生了什么变化?
- 14. 在OpenGL ES 2.0 for iOS中glDepthRange发生了什么变化?
- 15. 英亩OAuth控制台发生了什么变化?
- 16. 以下代码中发生了什么?
- 17. Facebook ASP(MVC)SDK发生了什么变化?
- 18. 发生了什么
- 19. IdentityServer4中的用户界面发生了什么变化?
- 20. 检查自上次以来网址的数据是否发生了变化?
- 21. iOS 6.1 NSDateFormatter自iOS 5以来发生了变化 - 破解解析?
- 22. 发生了什么错了?
- 23. “on Github”rails API文档链接发生了什么变化?
- 24. facebook sdk beta中的对话框发生了什么变化?
- 25. Handlebars.js中的__get__函数发生了什么变化?
- 26. TensorFlow中的RNN和Seq2seq选项发生了什么变化?
- 27. 输入元素的值发生了变化:做些什么
- 28. ExtJs 4.2和ExtJs 6.2之间gridviewdragdrop发生了什么变化
- 29. VS2010中的Help-> Index菜单项发生了什么变化?
- 30. Omniauth停止工作:可能发生了什么变化?
为什么标记为'kr-c'? K&R2书对待ANSI C,而不是K&R C. – schot 2010-08-25 17:47:50
类似的问题:http://stackoverflow.com/questions/2892951/list-of-deprecated-c-functions这里有很好的答案。看看* KennyTM *的第一条评论。 – karlphillip 2010-08-25 17:17:09