-1
我正在使用GCC预处理一些C文件。GCC预处理:在未假定零值的情况下保留未定义的条件
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 NO假设):
#if C == 0
foo()
#else
foo2()
#endif
foo3()
有没有办法做到这一点?我知道这就是GCC应该如何工作,但也许通过做一些手工工作,它可以完成 - 你有什么想法吗?
我知道,替代科恩将使这一切成为可能! - 但我不能提前使用它:-(
感谢
对不起你们,我的意思是#定义一个& B.编辑我的消息来源
在编译任何其他源之前先处理预处理行。 '#if A && B> 0'中的'A'和'B'与任何'A = 1'或'B = 0'源行无关。出于预处理器算术的目的,不是'#define'd的名称已被替换为'0'。 –
您的输入和您的输出不匹配。我怀疑一些复制/粘贴错误。 – gnasher729
什么是'A = 1'和'B = 0'?它无效C. – Lundin