我有一個源文件foo.c和一個頭文件bar.h。我怎樣才能擴展macros
bar.h而不擴展其他頭文件macros
?根據指定的頭文件在C中擴展宏
$ 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以上的源文件中擴展所有這些宏(和ONLY)。有什麼建議麼?
使用-D選項,例如-Dmacro = [defn] ..do man gcc並搜索此預處理器選項 – Omkant
@Omkant我在bar.h中定義了數百個宏。所以-D不是一種選擇。另外我想要的更像是文本處理,而gcc -D將編譯源代碼。 – Bergwolf