C++ 编译成C/C++;来源?

C++ 编译成C/C++;来源?,c++,c,programming-languages,code-translation,C++,C,Programming Languages,Code Translation,我用它来简化JavaScript开发。它是一种语法清晰的语言,可以编译成JavaScript P>那么,编译成C/C++源代码的编程语言是什么,为了简化语法和/或增强功能? < P>有把PHP程序转换成C++的。 < P>我听说CLAN可以编译C++到C中。但这取决于你想做什么。你真的想读代码吗?您正在尝试创建Windows应用程序吗 如果您正在寻找一种通用且易于学习的语言,Python总是一个不错的选择,它可以做C/C++所能做的一切。我想您可以为LLVM编写一个C后端,然后您可以将几乎所有

我用它来简化JavaScript开发。它是一种语法清晰的语言,可以编译成JavaScript


<> P>那么,编译成C/C++源代码的编程语言是什么,为了简化语法和/或增强功能?

< P>有把PHP程序转换成C++的。

< P>我听说CLAN可以编译C++到C中。但这取决于你想做什么。你真的想读代码吗?您正在尝试创建Windows应用程序吗


如果您正在寻找一种通用且易于学习的语言,Python总是一个不错的选择,它可以做C/C++所能做的一切。

我想您可以为LLVM编写一个C后端,然后您可以将几乎所有内容翻译成C,但更深层次的问题是“为什么?”今天没有任何工具可以做到这一点的原因是,如果您打算编译到C,为什么不一直以某种中间机器代码语言为目标呢?(例如,LLVM或JVM)

在过去,编译成C语言的想法有点站不住脚,因为当时缺乏像样的vm语言,但现在没有太多好的理由这么做。也就是说,您仍然可以找到许多项目,这些项目采用特定的解释语言,并尝试将它们编译为C/C++。例如,这里是一个Python到C++编译器:


Oracle的PRO*C/C++是一种嵌入式SQL语言。它允许在C/C++中包含SQL语句,该语句由预编译器处理,预编译器使用对所需C/C++SQL库的函数调用替换嵌入的SQL语句。预编译器的输出是标准C/C++,然后可以将其编译为可执行文件


引用文档:

元对象编译器MOC是处理Qt的C++扩展的程序。 MOC工具读取C++头文件。如果它找到包含QyObject宏的一个或多个类声明,它就生成包含这些类的元对象代码的C++源文件。除此之外,信号和插槽机制、运行时类型信息和动态属性系统都需要元对象代码。 MOC生成的C++源文件必须与类的实现进行编译和链接。


<> P>这是C++变成C++的一种,我不确定它是否适合你所寻找的。

< P>是使用GObjType系统并编译成C代码的语言。我从来没用过,但它们看起来很有趣。GObject是GTK使用的类型系统,但我认为它与GTK是可分离的。

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

有人可能会说,由于大多数主要编程语言都是等效的,它们实际上是等价的,用它们编写的程序可以相互翻译

也就是说,正如其他人所提到的,有相当多的语言有(或在开发早期曾经有)后端生成C代码,因为这消除了语言实现中二进制代码生成的复杂性。这并不意味着(意料之外的双关语)所说的代码实际上是可读的——它只是比它的编译形式更可读


<> P>至于我对列表的贡献,“程序”(如果可以被认为)通常转化为C代码——一个可怕的、混乱的混乱,但是C代码……

< P>语言可以输出到C++、C语言、java、JavaScript、Python(实验)、PHP,Flash和NekoVM。

编程语言ibminformix4gl经过多步转换为C代码,然后编译并链接到自己的运行库、ESQL/C(嵌入式SQL-in-C)运行库和系统的C库

  • 程序.4gl
    -原始源代码
  • program.4ec
    -C代码,带有嵌入式ESQL/C和扩展输入操作
  • program.ec
    -C代码,带有嵌入式ESQL/C
  • program.c
    -纯c代码
  • program.o
    -目标代码
  • 程序
    -可执行
.4ec
阶段是一种历史事故;最初,ESQL/C编译器处理扩展输入操作和ESQL/C,但当扩展操作从ESQL/C编译器中删除时(当ESQL/C库和编译器被显著重写时),扩展输入操作是通过从原始ESQL/C编译器中提取处理该操作的代码来处理的

相当多的人编写了代码生成器,可以从另一种语言编写I4GL源代码,或者在将密切相关的源代码提交给I4GL编译器之前将其预处理为I4GL。

可以将公共Lisp编译为C。

GHC(格拉斯哥哈斯克尔编译器)过去有一个选项(
-fvia-C
)编译成C


<>我相信,从V7开始,LLVM被用来生成本地代码而不是通过外部C++编译器。

是很新的,但是很不错。所以我假设你实际上并不是在问语言本身,而是关于哪些语言有特定的实现,编译到C或C++中。我认为它仍然是编译器,除非输入代码和输出代码之间有密切的对应关系(到它基本上只是一个快速的AST转换)。如果你的翻译器正在进行类型传播等,那么它可能更接近于编译器。有趣的问题。处于早期开发阶段的语言通常编译为C语言,作为完整语言开发的先驱