/E (前置處理至 stdout)
前置處理 C 和 C++來源檔案,並將前置處理過的檔案複製到標準輸出裝置。
語法
/E
備註
在此程式中,會執行所有預處理器指示詞、執行巨集擴充,以及移除批注。 若要保留前置處理輸出中的批注,請使用 /C (在前置處理期間保留批注) 編譯程序選項。
/E 會將指示詞新增 #line
至每個包含檔案的開頭和結尾,以及預處理器指示詞移除的行周圍,以進行條件式編譯。 這些指示詞會重新編號前置處理過的檔案行。 因此,後續處理階段所產生的錯誤是指原始原始程式檔的行號,而不是前置處理檔案中的行號。
/E 選項會隱藏編譯。 您必須重新提交前置處理過的檔案以進行編譯。 /E 也會隱藏 /FA、/Fa 和 /Fm 選項的輸出檔案。 如需詳細資訊,請參閱 /FA、/Fa(清單檔案)和 /Fm(名稱 Mapfile)。
若要隱藏 #line
指示詞,請改用 /EP (Preprocess to stdout Without #line Directives) 選項。
若要將前置處理的輸出傳送至檔案,而非 傳送至 stdout
,請改用 /P (前置處理至檔案) 選項。
若要隱藏 #line
指示詞並將前置處理的輸出傳送至檔案,請 同時使用 /P 和 /EP 。
您無法搭配 /E 選項使用先行編譯標頭。
請注意,在前置處理至個別檔案時,令牌之後不會發出空格。 這可能會導致非法程式或有意外的副作用。 下列程式已成功編譯:
#define m(x) x
m(int)main( )
{
return 0;
}
不過,如果您使用:
cl -E test.cpp > test2.cpp
int main
中的 test2.cpp 不正確。intmain
在 Visual Studio 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性。
選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。
在 [ 其他選項 ] 方塊中輸入編譯程序選項。
若要以程式方式設定這個編譯器選項
範例
下列命令行會預先處理 ADD.C
、保留批註、新增 #line
指示詞,並在標準輸出裝置上顯示結果:
CL /E /C ADD.C