当我在任何版本的Microsoft编译器中使用/ P命令行选项从C或C ++源代码文件生成预处理器.i输出文件时,生成的代码有时根本无法编译,即使原始C / C ++源代码编译得很好。例如,当我直接编译以下代码时没有问题:
#define VALUE -1
int main(void)
{
int x = -VALUE;
return 0;
}
但是,预处理器输出文件“等效”如下所示,这显然不是等效的,不会编译:
int main(void)
{
int x = --1;
return 0;
}
所以我的问题是:
我是否应该使用其他一些Microsoft选项来获取始终正确表示原始文件的.i文件?
是否有任何编译器的预处理器输出文件总是正确表示原始文件?
如果我不能使用Microsoft,我的第二个选择是minGW,然后为Windows铿锵作响。我只想要能产生正确.i文件的东西。
由于