4

在研究 D 语言时,我遇到了 GDC,一个用于 GCC 的 D 编译器。我从这里下载了 MinGW 的版本:

http://sourceforge.net/projects/dgcc/files/

文档几乎不存在,但它确实说大多数命令行开关与 GCC 编译器相同。但是,这对我没有多大帮助,因为我通常不使用 GCC 构建。

GDC 被描述为“GCC 前端”。这让我认为在某些时候它必须生成 GCC 编译器实际上可以吞下的中间 C++ 或 C。我相信这就是 GCC 编译 Objective-C 程序的方式。

我想知道的是:有没有办法让 GDC 将中间 C/C++ 代码作为文件发出,然后我可以使用 GCC/MinGW 手动检查和编译?

4

3 回答 3

9

不。

GCC 的前端生成与语言无关的表示,然后直接编译为汇编。C、C++、Obj-C、D、Fortran、Java、Ada 和其他前端就是这种情况。没有中间的 C 或 C++ 表示,也无法生成。

于 2009-07-10T20:01:19.483 回答
5

快速回答:没有。

根据我对 GCC 的了解,它使用抽象语法树来表示从前端传递到后端的与语言无关的代码表示。从理论上讲,可以将 AST“反编译”为 C/C++ 代码,但 AFAIK GCC 套件没有实现这一点。

于 2009-07-10T19:17:44.657 回答
3

基本上,您需要一个gcc生成 C/C++ 作为其目标平台的后端,而不是 x86。这是完全可能的,但我不知道这样做的实现。顺便说一句,如果存在,输出可能不是很可读。

于 2009-07-10T20:03:44.893 回答