c c 语言开发的源码在编译时,可以编译为C / C ++源代码的编程语言?

可以编译为C / C ++源代码的编程语言?

我正在使用CoffeeScript来简化JavaScript开发。 这是一种语言,具有干净的语法,可以编译为JavaScript。

那么,可以使用哪些已建立的编程语言来编译为C / C ++源代码,以简化语法和/或增强功能?

14个解决方案

15 votes

Haxe语言可以输出到C ++,C#,Java,JavaScript,Python(实验性),PHP,Flash和NekoVM。

M.Stoffregen answered 2019-10-13T17:23:52Z

13 votes

Vala和Genie是使用GObject类型系统并编译为C代码的语言。 我从未使用过它们,但它们看起来很有趣。 GObject是GTK使用的类型系统,但我认为它可以与GTK分离。

Sean answered 2019-10-13T17:24:15Z

9 votes

OOC非常新,但是非常不错。

tsg answered 2019-10-13T17:24:39Z

8 votes

有HipHop,可将PHP程序转换为C ++。

GWW answered 2019-10-13T17:25:02Z

8 votes

GHC(格拉斯哥Haskell编译器)曾经有一个选项(-fvia-c)可以编译为C。

我相信从v7开始,LLVM用于生成本机代码,而不是通过外部C编译器。

stusmith answered 2019-10-13T17:25:34Z

6 votes

引用Qt文档:

元对象编译器moc是处理Qt的C ++扩展的程序。   moc工具读取C ++头文件。 如果找到一个或多个包含Q_OBJECT宏的类声明,它将生成一个C ++源文件,其中包含这些类的元对象代码。 除其他事项外,信号和时隙机制,运行时类型信息和动态属性系统还需要元对象代码。   必须编译由moc生成的C ++源文件,并与该类的实现链接。

因此,这是C ++变成C ++的一种,我不确定它是否适合您的需求。

Vinicius Kamakura answered 2019-10-13T17:26:14Z

4 votes

编程语言IBM Informix 4GL经过多步转换为C代码,然后将其编译并与自己的运行时库,ESQL / C(C中的嵌入式SQL)运行时库和系统的C库链接。

.4ec-原始源代码

.4ec-具有嵌入式ESQL / C和扩展输入操作的C代码

.4ec-带有嵌入式ESQL / C的C代码

.4ec-纯C代码

.4ec-对象代码

.4ec-可执行文件

2567751057367667630848阶段是一种历史性事故; 最初,ESQL / C编译器既处理扩展输入操作又处理ESQL / C,但是当从ESQL / C编译器中删除扩展操作时(当ESQL / C库和编译器被重大重写时),扩展输入操作 通过从原始ESQL / C编译器中提取处理代码的代码来进行处理。

相当多的人编写了代码生成器,这些代码生成器使用另一种语言编写I4GL源代码,或者在将紧密相关的源代码提交给I4GL编译器之前对其进行预处理。

Jonathan Leffler answered 2019-10-13T17:27:33Z

4 votes

嵌入式Common Lisp(ECL)可以将Common Lisp编译为C。

sigjuice answered 2019-10-13T17:27:57Z

3 votes

我想您可以为LLVM写一个C后端,然后您可以将几乎所有内容转换为C,但是更深层的问题是“为什么?” 今天没有任何工具可以执行此操作的原因是,如果您要编译成C语言,为什么不一直将目标指向某种中间机器代码语言呢? (例如,LLVM或JVM)

如今,在较早的年代,由于缺乏像样的vm语言,编译为C的想法更具说服力,但是今天并没有太多的理由这样做。 也就是说,您仍然可以找到许多使用某些解释语言的项目,然后尝试将它们编译为C / C ++。 例如,这是从python到C ++的编译器:

[http://shed-skin.blogspot.com/]

Mikola answered 2019-10-13T17:28:37Z

1 votes

有人可能会说,由于大多数主要的编程语言都是图灵完备的,因此它们实际上是等效的,并且用它们编写的程序可以相互翻译。

就是说,正如其他人所提到的那样,有相当多的语言可以(或曾经在其开发初期)用于生成C代码,因为这消除了语言实现中二进制代码生成所涉及的复杂性 。 这绝对不是说(实际上是意料之外的)所说的代码实际上是可读的-它比其编译形式更具可读性。

至于我对清单的贡献,通常将lex和yacc“程序”(如果可以认为它们)转换为C代码-令人费解的混乱,但仍然是C代码...

thkala answered 2019-10-13T17:29:15Z

0 votes

我听说clang可以将C ++编译为C。但是我怀疑这会“简化”任何事情。

Kerrek SB answered 2019-10-13T17:29:40Z

0 votes

大多数语言都可以用来生成C代码,但这实际上取决于您要执行的操作。 您实际上是否希望能够阅读代码? 您是否只是在尝试创建Windows应用程序?

如果您正在寻找一种易于学习的通用语言,那么Python始终是一个不错的选择,它可以完成C / C ++可以做的所有事情。

Chriszuma answered 2019-10-13T17:30:13Z

0 votes

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]

dave answered 2019-10-13T17:30:51Z

0 votes

可以将Matlab的子集(嵌入式Matlab)编译为C。您需要嵌入式编码器工具箱。

edgar.holleis answered 2019-10-13T17:31:16Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值