C是否建立在C之上?

C是否建立在C之上?,第1张

概述在编译之前C代码是否转换为C? 一些C编译器(原始cfront,Comeau C)在编译期间使用C作为中间语言.大多数C编译器使用其他中间语言(例如llvm). 编辑:由于似乎对历史有一些误解:“C with classes”开始使用名为“Cpre”的预处理器.当时,它被严格地视为C语言,而不是单独的语言本身. 1983年12月,人们开始将其视为一种单独的语言,并且发明了名称C.碰巧的是,cfro 在编译之前C代码是否转换为C?解决方法 一些C编译器(原始cfront,Comeau C)在编译期间使用C作为中间语言.大多数C编译器使用其他中间语言(例如llvm).

编辑:由于似乎对历史有一些误解:“C with classes”开始使用名为“Cpre”的预处理器.当时,它被严格地视为C语言,而不是单独的语言本身. 1983年12月,人们开始将其视为一种单独的语言,并且发明了名称C.碰巧的是,cfront的开发始于1983年4月,所以一个合理可用的版本变得可用(少数几个)与名称“C”开始使用的时间差不多.这似乎是巧合,但不是一个计划.

至于产生C作为其输出,这在Unix上确实很常见.例如,Berkeley Pascal编译器和至少一些Fortran编译器也将C作为输出.

但是,Cpre和Cfront之间存在巨大差异.尽管两者都将C作为输出,但Cpre几乎没有对其自身进行语法检查 – 它查找了一些特定的东西,并对它们进行了相对机械的翻译.直到C编译器查看结果才进行了真正的语法分析.如果您的代码包含语法错误,则几乎可以肯定,在C编译器解析Cpre的输出之前,它不会被捕获.

但是,Cfront对源代码本身进行了完整的语法分析,因此(在其代码生成器中没有错误),您从未看到C编译器的语法错误. C编译器只是用作代码生成器,因此没有人需要重写CFront以适应不同的处理器,目标文件格式等.

如果你想了解更多细节,C的设计和演变的第2章几乎完全专注于“C with Classes”时间框架(并且在本书中有关于它的各种其他细节).

总结

以上是内存溢出为你收集整理的C是否建立在C之上?全部内容,希望文章能够帮你解决C是否建立在C之上?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1238029.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存