4

相关的问题在这里:How can I run the MSVC preprocessor and compiler in two separate steps?MSVS C++,如何编译带* .i扩展名的已预处理文件?

我明确地预处理一个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

+0

非常感谢你的提问。这些天微软迟迟未能兑现。 MSDN只是说“重新提交编译”.i文件,而没有提到如何做到这一点 – igbgotiz 2014-06-03 05:29:36

回答

5

cl.exe有这两个标志

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

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

,让您编译任意扩展名作为文件cC++文件

我试图编译包含以下内容

#include <iostream> 

using namespace std; 

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

cl /Tp main.i一个main.i,它像宣传的那样

+0

非常感谢你的答案。我无法理解为什么在宇宙中没有MSDN页面告诉你这是如何编译一个“.i”文件。所有它说的是你需要“重新提交.i文件”进行编译,这对牛来说就像一对奶嘴一样没用。 – igbgotiz 2014-06-03 05:32:21

+0

如何在其他源(.cc/.cpp)文件中包含预处理器文件(X.hpp.i文件)? – 2017-08-07 12:13:50