我可以让GCC进行部分预处理,只将我的头文件添加到C文件中吗?

时间:2016-10-05 00:18:02

标签: c gcc c-preprocessor

我在这里做实验。大学有(制作精良)家庭作业自动评估系统。目前,他们的系统仅允许main.c个文件。

我有很少的调试宏和其他我通过我编写的简单C代码一直使用的东西。但手动将它们粘贴到main.c会变得很烦人。

我用Google搜索了如何在我的gcc文件上运行c预处理程序。

gcc -E main.c -omain_no_header.c

这会创建根本不需要标题的文件。有必要从该文件中删除现在多余的# xxx stuf:

grep -v '^#' main_no_header.c > main_no_header_clean.c

此文件与此命令完美编译:

gcc -Wall -pedantic -std=c99 main_no_header_clean.c -o main

根本没有警告。但它包含一些非常扭曲的东西:

 wint_t __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _fgetwchar (void);

还有一些Windows的东西。如果我将此文件作为作业上传,这会导致很多错误。

所以问题是:我可以让GCC创建这样的预处理文件, NOT 是否展开了任何系统库?具体来说,我只想展开/嵌入项目中的文件(例如main.hdebug_macros.h等)。

当然,如果这不是一个选项,我将不得不编写一个脚本来使用正则表达式。

0 个答案:

没有答案