我在这里做实验。大学有(制作精良)家庭作业自动评估系统。目前,他们的系统仅允许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.h
,debug_macros.h
等)。
当然,如果这不是一个选项,我将不得不编写一个脚本来使用正则表达式。