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

问题描述 投票:0回答:1

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

我明确地将

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

c++ visual-c++ c-preprocessor compiler-flags
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
一起使用,效果如广告所示

© www.soinside.com 2019 - 2024. All rights reserved.