cl.exe(Visual Studio C/C++ 语言编译器)使用/P 标志将源文件编译为预处理文件,例如cl/P Source.c
创建 Source.i
我想将这个 Source.i(不是 Source.c)编译成 Source.obj。我应该怎么做?找不到将预处理文件作为输入的标志。
最佳答案
您不需要做任何特别的事情。它是一个有效的 C++ 源文件,只用于您的编译器。 (虽然它不会是一个可移植的源文件,因为所有工具链自己的标准库 gubbins 以及其他任何东西都已扩展。)
这里唯一的技巧是,“中间”步骤通常由前端为您完成,获取经过预处理的源代码并将其传递给“真正的”编译器。但您仍然可以自己做。
但是,您可能希望重命名它,使其具有类似 C++ 的良好扩展名。否则,您可以通过 /Tp
强制您的文件被视为 C++,无论扩展名如何。 (对于 GCC,这将是 -x c++
。)
另一件需要注意的事情是,它仍然会在你的文件上运行一个预处理步骤,不知道它不再需要(所有的 preproc 指令已经在你的第一步中被扩展),所以这有点浪费额外的时间。但这不是(或不应是)典型的工作流程。
cl /P Source.c
cl /Tp Source.i
关于c++ - 如何使用VS编译器将预处理文件编译成目标文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56460348/