我有一个很大的头文件,其中包含许多部分,根据文件中是否定义了某些名称来包含或省略这些部分。例如像这样的行:
\#define A
\#define B 2
...
\#ifdef A
...
...
\#endif
...
\#ifdef B
...
\#ifndef A
...
\#endif
\#endif
我想生成一个文件,其中由于已定义和未定义的名称而将被省略的所有部分都将被删除。我还想从输出文件中删除单行和多行注释。
我努力了
gcc -E Configuration.h > Configuration.i
但这只会产生输出,例如-
1 "Configuration.h"
1 "built-in" 1
1 "built-in" 3
341 "built-in" 3
1 "command line" 1
1 "built-in" 2
1 "Configuration.h" 2
(在上面的文本中,每行实际上前面都有一个哈希字符,并且单词“内置”和“命令行”括在尖括号中,但是在我的消息中键入这些字符会产生奇怪的效果。)
关于我如何做我想做的事情的任何建议。我宁愿不必编写代码或脚本来执行此操作。
答案1
使用-P
选项(禁止生成线标记):
gcc -P -E -xc input > output
其他有趣的选项是-C
和-fpreprocessed
;您可以在联机帮助页中找到它们gcc(1)
。