如何使用VS编译器将预处理文件编译为目标文件

时间:2019-06-05 12:17:46

标签: c++ visual-studio compilation cl

cl.exe(Visual Studio C / C ++语言编译器)使用/ P标志将源文件编译为预处理的文件,例如cl /P Source.c创建Source.i

我想将此Source.i(而不是Source.c)编译为Source.obj。我该怎么办?找不到将预处理文件作为输入的标志。

1 个答案:

答案 0 :(得分:4)

您不需要做任何特别的事情。这是一个有效的C ++源文件,仅用于编译器。 (尽管它不会是可移植的源文件,因为所有工具链自己的标准库gubbins以及其他任何东西都已扩展。)

这里的唯一技巧是通常由前端为您完成“中间”步骤,将经过预处理的源代码传递给“实际”编译器。但是您仍然可以自己做。

但是,您可能想要重命名它,使其具有一个类似于C ++的扩展名。否则,您可以传递/Tp来强制将文件视为C ++,而不管其扩展名如何。 (对于海湾合作委员会,这将是-x c++。)

要注意的另一件事是,它仍将在文件上运行预处理步骤,而不知道不再需要它(所有preproc指令已经在第一步中扩展了),所以这有点浪费额外的时间。但这不是(也不应该是)典型的工作流程。

cl /P Source.c
cl /Tp Source.i