GCC 预处理:保留未定义的条件而不假设零值
GCC Preprocessing: Leave undefined Conditionals without assuming zero-values
我正在使用 GCC 预处理一些 C 文件。
示例来源:
#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。编辑了我的来源
不,如果没有某些第三方应用程序,则无法执行此操作。 GCC 和 clang 都不包含此功能,这就是存在第三方工具的原因。
我正在使用 GCC 预处理一些 C 文件。
示例来源:
#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。编辑了我的来源
不,如果没有某些第三方应用程序,则无法执行此操作。 GCC 和 clang 都不包含此功能,这就是存在第三方工具的原因。