我正在使用CoffeeScript来简化JavaScript开发。它是一种语法清晰的语言,可以编译成JavaScript。
那么,为了简化语法和/或增强功能,编译成C / C ++源代码的既定编程语言是什么?
答案 0 :(得分:15)
语言Haxe可以输出到C ++,C#,Java,JavaScript,Python(实验),PHP,Flash和NekoVM。
答案 1 :(得分:13)
答案 2 :(得分:9)
OOC很新但非常好。
答案 3 :(得分:8)
有HipHop,它将PHP程序转换为C ++。
答案 4 :(得分:8)
GHC(格拉斯哥Haskell编译器)以前有一个选项(-fvia-c
)可以编译为C.
我相信从v7开始,LLVM用于生成本机代码,而不是通过外部C编译器。
答案 5 :(得分:6)
引用Qt文档:
元对象编译器moc是处理Qt C ++扩展的程序。 moc工具读取C ++头文件。如果它找到一个或多个包含Q_OBJECT宏的类声明,它将生成一个C ++源文件,其中包含这些类的元对象代码。除此之外,信号和槽机制,运行时类型信息和动态属性系统都需要元对象代码。 必须编译moc生成的C ++源文件并将其与类的实现链接。
所以这种C ++变成了C ++,我不确定它是否适合你想要的东西。
答案 6 :(得分:4)
编程语言IBM Informix 4GL经过多步转换为C代码,然后编译并链接到自己的运行时库,ESQL / C(嵌入式SQL in C)运行时库和系统的C库
program.4gl
- 原始源代码program.4ec
- 包含嵌入式ESQL / C和扩展输入操作的C代码program.ec
- 嵌入式ESQL / C的C代码program.c
- 纯C代码program.o
- 对象代码program
- 可执行文件 .4ec
阶段是一种历史事故;最初,ESQL / C编译器处理扩展输入操作和ESQL / C,但是当从ESQL / C编译器中删除扩展操作时(当ESQL / C库和编译器被重写时),扩展输入操作通过从原始ESQL / C编译器中删除处理该代码的代码来处理。
相当多的人编写了代码生成器,这些代码生成器从另一种语言编写I4GL源代码,或者在提交给I4GL编译器之前将密切相关的源代码预处理到I4GL中。
答案 7 :(得分:4)
Embeddable Common Lisp (ECL)可以将Common Lisp编译为C。
答案 8 :(得分:3)
我想你可以为LLVM写一个C后端,然后你可以将任何东西翻译成C,但更深层次的问题是“为什么?”今天没有任何工具可以做到这一点的原因是,如果你要编译成C,为什么不一直走到目标并使用一些中间机器代码语言呢? (例如,LLVM或JVM)
现在在过去的日子里,编译到C的想法更加可靠,因为缺乏合适的vm语言,但今天没有太多理由去做。也就是说,您仍然可以找到许多项目,这些项目采用某些解释语言并尝试将它们编译为C / C ++。例如,这是一个python到C ++编译器:
答案 9 :(得分:1)
有人可能会说,由于大多数主要编程语言都是Turing-complete,因此它们实际上是等价的,并且编写在其中的程序可以相互翻译。
也就是说,就像其他人提到的那样,有很多语言可以生成C代码(或者曾经是他们开发的早期阶段)后端,因为这样可以消除二进制代码生成所涉及的复杂性。语言实现。这绝不意味着(双关语)所述代码实际上是可读的 - 它比其编译形式更具可读性。
至于我对列表的贡献,lex和yacc“程序”(如果可以认为它们)通常会转换为C代码 - 这是一个可怕的,混乱的混乱,但C尽管如此......
答案 10 :(得分:0)
我听说clang可以将C ++编译成C.我怀疑这会“简化”任何东西。
答案 11 :(得分:0)
大多数语言都可用于生成C代码,但这实际上取决于您要做的事情。你真的希望能够阅读代码吗?您是否只是尝试创建Windows应用程序?
如果您正在寻找一种易于学习的通用语言,Python始终是一个不错的选择,它可以完成C / C ++所能做的所有事情。
答案 12 :(得分:0)
Oracle的PRO * C / C ++是一种嵌入式SQL语言。它允许在C / C ++中包含SQL语句,该语句由预编译器处理,该预编译器使用对所需C / C ++ SQL库的函数调用替换嵌入式SQL语句。预编译器的输出是标准的C / C ++,然后可以编译成可执行文件。
http://en.wikipedia.org/wiki/Pro*C
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14407/toc.htm
答案 13 :(得分:0)
Matlab(嵌入式Matlab)的一个子集可以编译为C.你需要嵌入式编码器工具箱。