我正在使用GCC预处理某些C文件。
Examplesource:
#define A 1
#define B 0
#if A && B > 0
bla()
#else
#if C == 0
foo()
#else
foo2()
#endif
foo3()
#endif
我在批处理文件中运行此操作,该批处理文件会留下评论(-CC
)并且无法通过宏(-fdirectives-only
)运行:
gcc -E -CC -fdirectives-only -Wundef infile.c > outfile.c
它给出了上面例子的以下输出,因为它假定C = 0自动:
foo()
foo3()
我想要以下输出(GCC没有做出任何假设):
#if C == 0
foo()
#else
foo2()
#endif
foo3()
有没有办法做到这一点?我知道GCC 应该如何工作,但也许通过做一些手工工作,可以做到 - 你有什么想法吗?
我知道,替代Coan会使这成为可能 - 但我不允许使用它: - (
提前致谢!
抱歉,我认为#define A& B.编辑我的来源
答案 0 :(得分:1)
不,没有第三方应用程序就无法做到这一点。 GCC和clang都没有包含此功能,这就是为什么存在第三方工具的原因。