MSVS C ++,如何使用* .i扩展名编译已经预处理的文件?

时间:2011-12-23 15:15:27

标签: c++ visual-c++ compiler-construction c-preprocessor compiler-flags

此处的相关问题: How can I run the MSVC preprocessor and compiler in two separate steps?

我明确地预处理MyFile.cpp(不编译)到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约定。

问题:我是否可以使用MSVS编译MyFile.i

1 个答案:

答案 0 :(得分:5)

cl.exe有这两个标志

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

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

允许您将任意扩展名的文件编译为 c c ++ 文件

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

#include <iostream>

using namespace std;

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

使用cl /Tp main.i,它的工作方式为广告

相关问题