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