预处理 C 头文件

预处理 C 头文件

我有一个很大的头文件,其中包含许多部分,根据文件中是否定义了某些名称来包含或省略这些部分。例如像这样的行:

\#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)

相关内容