是否有任何C / C ++预处理器生成准确的.i文件?

时间:2018-04-24 02:27:15

标签: c++ c c-preprocessor

当我在任何版本的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;
}

所以我的问题是:

  1. 我是否应该使用其他一些Microsoft选项来获取始终正确表示原始文件的.i文件?

  2. 是否有任何编译器的预处理器输出文件总是正确表示原始文件?

  3. 如果我不能使用Microsoft,我的第二个选择是minGW,然后为Windows铿锵作响。我只想要能产生正确.i文件的东西。

    由于

0 个答案:

没有答案