2017-07-04 64 views
1

我知道gcc做到了。但我想要一个可以这样做的C程序。该程序应该接受一个.c文件,并执行预处理操作并生成.i文件 供参考:这是一个项目,分配给他的大学我的亲属。从.c文件生成.i文件

+1

为什么?你想解决什么问题?为什么你不能简单地使用'gcc -E'?或者你想实现你自己的预处理器吗? –

+0

GCC是一个C程序...所以... – StoryTeller

+3

@StoryTeller不,这是一个(惊喜)C++程序。虽然旧版本是C. –

回答

3

使用命令cc -E file.c -o file.i这会给你预处理文件。欲了解更多信息,请参阅man页面。

只需再次阅读您的问题。你想编写程序,创建该文件。 那么你必须为此做很多工作。首先,你需要阅读#include#define和条件包含(#if, #elif #endif),然后你需要检测< >" ",阅读这些符号中的文件。那么你必须fopen()这些文件并将其粘贴到.i文件中。

总结起来,这将是很多工作,但这是做到这一点。

编辑它不只是复制过去。读取头文件意味着#include里面现在说你的头文件是abc.h,那么你必须搜索可以存在.h文件的所有预定义位置。如果发现你需要fopen()该文件读取它的内容并将其写入你的.c文件。另外你必须照顾宏指令和条件包含。相信我,我已经尝试过了,它的很多工作。但你可以尝试它会提高你的基本

+0

是的。我想编写程序..读取头文件?意味着我需要将所有从头文件粘贴到.i文件中? – user2940249

+0

**供参考:这是一个项目,分配给我的亲属在他的大学。**教授可能已经给了一些条件来做这个项目。 –

+0

我不知道任何条件。谢谢你的帮助。这澄清了几乎一切。 – user2940249

0

如果你不能使用外部程序,如gcc,你必须自己实现C预处理器。整个预处理器在C Programming Language specification的“预处理指令”一节中有描述。或者,如果你不能使用其他程序,但你不想自己实现它,你可以尝试使用libclang作为一个库(尽管如此,你需要C++)。