我有一个源文件foo.c和一个头文件bar.h。我怎样才能macros
在bar.h中展开而不macros
在其他头文件中展开?
$ cat foo.c
#include <stdio.h>
#include "bar.h"
int main()
{
#ifdef BAR_FUNC
printf("bar func\n");
#else
printf("foo func\n");
#endif
return 0;
}
$ cat bar.h
#define BAR_FUNC 1
我想要的是:
$ EXPAND_MAGIC foo.c
#include <stdio.h>
int main()
{
printf("bar func\n");
return 0;
}
如果我使用`gcc -E
,它也会扩展<stdio.h>
。但我只想在bar.h中扩展宏。gcc 中是否有这样做的选项?如果没有,是否有其他工具可以进行这种预处理?
更新:上面的foo.c/bar.h只是一个例子。实际上,我在 bar.h 中定义了数百个宏(请考虑在一个相当大的项目中由 autoconf 生成的 config.h)。我想要的是在超过 10K 的源文件中扩展所有(并且仅)这些宏。有什么建议么?