4

此处的相关问题: 如何在两个单独的步骤中运行 MSVC 预处理器和编译器?

MyFile.cpp我明确地将 a (不编译)预处理为MyFile.i. 我想稍后“编译”该文件(明确跳过预处理会很好,但正如相关问题所暗示的那样,这听起来像是 MSVS 不可能。)

问题:这MyFile.i是一个“无法识别的扩展名”,并cl.exe假设它是一个“目标文件”,导致“无操作”。(请参阅 Microsoft 警告: http: //msdn.microsoft.com/en-us/library/zfsbakc5 (v=VS.90).aspx ,此警告对 MSVS 2005、2008、2010 有效)。

我找不到一个开关来说明它是一个“源文件”(不是一个目标文件)。相关问题明确使用了“ MyFile_preprocessed.cpp”约定,但我真的更愿意遵守(更通用的)MyFile.i约定。

问题:有没有可以MyFile.i用 MSVS 编译的标志?

4

1 回答 1

5

cl.exe有这两个标志

  • /Tc<source file>将文件编译为 .c

  • /Tp<source file>将文件编译为 .cpp

这使您可以将具有任意扩展名的文件编译为cc++文件

main.i我尝试用以下内容编译

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello world \n";
    return 0;
}

cl /Tp main.i它的工作方式和宣传的一样

于 2011-12-23T15:38:14.797 回答