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

相關問題