哪些通用的编程语言/实现可以编译成C语言?

25

我目前正在使用 Eiffel(SmartEiffel/ISE Eiffel),它可以编译为 C 语言。

如果输出结果是可移植的汇编语言,也就是 C,那么自己扩展语言或添加新功能或工具支持会变得更加容易。

哪些通用的非函数式语言也有这个特性呢?

我知道曾经有过过时的 C++ 预编译器,我甚至找到了一个旧的 Objective-C 预编译器。

(我也听说过 Scheme 和 Lisp 编译器,但我不喜欢这些语言。)

请只列出 FOSS(免费开源)项目,因为我需要学习它们。


3
应该将其设为社区维基条目,因为没有单一正确的答案。 - Joey
4
Haskell的GHC编译器可以编译成C语言。但是你不喜欢Scheme和Lisp?!那就意味着你不理解它们 :) - Artelius
8个回答

27

12

好的,处理异常和浮点数等方面有一些注意事项,但是LLVM可以输出C代码(尽管没有人在生产中使用它,所以它经常滞后于主要版本)。这意味着任何基于LLVM静态编译的语言都可以输出到C代码,包括所有llvm-gcc前端:

并非所有这些都必须经过测试,并且可能需要进行一些调整才能正常工作,但应该都不会有太大的问题。


我试图远离巨大的LLVM项目(在Windows上安装和使用不方便),以及gcc后端。所以这对我来说并不是真正的选择。 - Lothar
1
你忘了Cython。它将Python编译成C语言,但仍然使用Python标准库,而该库也是用C语言编写的。 - unixman83

8

Vala是一种类似于C#的编程语言,它是Gnome项目的一部分。


6

Sather, Mercury, Felix, Seed7等许多编程语言,通常会生成C(或C ++),被视为“可移植汇编语言”,这具有依赖于C编译器编写者经验进行优化的额外优势。


6

haXe.org:一种可以编译为多种语言的语言,包括C++。


3

13
还有一个想编写面向对象语言的人采取了同样的方法——你不会相信这给他造成了多少麻烦。 - Martin Beckett
@MartinBeckett 您是在问Bjarne Stroustrup吗? - An Ant

2

ooc (http://ooc-lang.org/)是一种编程语言,Virgil (http://compilers.cs.ucla.edu/virgil/overview.html)是一款Algol-to-C的翻译器,但它已经被废弃。


2
Cython声称可以将Python编译成C。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接