大佬教程收集整理的这篇文章主要介绍了为什么C编译器不能做类型推断?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
至于为什么C不进行类型推断:C中的类型不是为了强制逻辑关系,也不是用语言编码真值.在某种程度上,具有声音类型系统的语言(@L_874_1@,OCaml,SML,Coq等……)意味着类型告诉你一些东西:有一个定理你可以从类型中记下你的程序. (参见Philip Wadler的“免费定理!”作为一个有趣的例子!)
那么为什么C使用类型呢?原因很简单,编译器需要知道 – 在某种程度上 – 如何组织存储在内存中的数据.而不是逻辑一致性,C中的类型可以告诉你如何布局,我应该把这个int放在一个结构中等等……
相反,C有许多习惯用法来模仿类型安全语言中的更多标准功能.例如,void指针通常用于表示参数多态. (例如,你可以有一个列表,其中可以包含指向任何数据类型的指针.)事实上,它做了更多的事情,在C中你可以编码指向不同数据类型的列表.在传统的函数式语言中,列表的归纳类型要求所有元素都属于同一类型,您可以在C中轻松编码不合格类型和行(例如,在C中,通过使用标识符标记列表元素来完成).
有C的类型和内存安全方言,以@L_696_10@为例,在某些地方,多态性确实取代了像void指针这样的事情,同时仍然给你很多C语言的细节.
以上是大佬教程为你收集整理的为什么C编译器不能做类型推断?全部内容,希望文章能够帮你解决为什么C编译器不能做类型推断?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。