分享方式:


/Yu (使用先行編譯頭檔)

指示編譯程式在目前的編譯中使用現有的先行編譯頭 (.pch) 檔案。

語法

/Yu[filename]

引數

filename
標頭檔的名稱,其包含在原始程式檔中使用 #include 預處理器指示詞。

備註

針對建立先行編譯標頭的選項,以及表示使用先行編譯標頭的任何更新/Yu選項,包含檔案的名稱必須相同/Yc

針對/Ycfilename 會指定先行編譯停止的點;編譯程式會先行編譯所有程序代碼,但會使用 include 檔案的基底名稱以及 擴展名.pch,將產生的先行編譯標頭命名為 。

.pch檔案必須使用 來建立/Yc

編譯程式會將 .h 檔案之前發生的所有程式代碼視為先行編譯。 它會跳至與檔案相關聯的 .h 指示詞之外#include,使用檔案中包含的.pch程式代碼,然後在檔名之後編譯所有程序代碼。

在命令行上,不允許在 和 filename 之間/Yu使用空格。

當您指定 /Yu 不含檔名的選項時,來源程式必須包含 #pragma hdrstop pragma,指定先行編譯頭檔案 .pch 的檔名。 在此情況下,編譯程式會使用 由 /Fp (Name .pch file)命名的先行編譯頭(.pch檔案)。 編譯程式會跳至該 pragma 的位置,並從指定的先行編譯頭檔還原編譯狀態。 然後,它只會編譯遵循 pragma 的程式代碼。 如果未 #pragma hdrstop 指定檔名,編譯程式會尋找擴展名衍生自來源檔案基底名稱的檔案 .pch 。 您也可以使用 /Fp 選項來指定不同的 .pch 檔案。

如果您指定 /Yu 不含檔名且無法指定 hdrstop pragma 的選項,則會產生錯誤訊息,而且編譯失敗。

/Yc如果檔名/Yu檔名選項發生在相同的命令行上,而且兩者都參考相同的檔名,/Yc則檔名會優先先行編譯所有程序代碼,包括具名檔案。 這項功能可簡化makefiles的撰寫。

因為 .pch 檔案包含計算機環境的相關信息,以及程式的相關記憶體位址資訊,所以您應該只在建立程式的計算機上使用 .pch 檔案。

如需先行編譯標頭的詳細資訊,請參閱:

在 Visual Studio 開發環境中設定這個編譯器選項

  1. 在專案中的.cpp檔案上指定 /Yc (建立先行編譯頭檔 )。

  2. 開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性

  3. 選取 [設定屬性>C/C++][>編譯標頭] 屬性頁。

  4. 修改先行編譯的 Header 屬性、Create/Use PCH Through File 屬性,或 Create/Use Precompiled Header 屬性。

若要以程式方式設定這個編譯器選項

範例

如果下列程式代碼:

#include <afxwin.h>   // Include header for class library
#include "resource.h" // Include resource definitions
#include "myapp.h"    // Include information specific to this app
...

是使用命令行 CL /YuMYAPP.H PROG.CPP編譯,編譯程式不會處理這三個 include 語句。 相反地,它會使用 的先行編譯程序代碼 MYAPP.pch,以節省前置處理這三個檔案所牽涉到的時間(以及它們可能包含的任何檔案)。

如果名稱不同於 的 filename 自變數/Yc或來源檔案的基底名稱,您可以使用 /Fp (Name .pch file) 選項搭配 /Yu 選項來指定.pch檔名,如下列範例所示:

CL /YuMYAPP.H /FpMYPCH.pch PROG.CPP

此命令會指定名為 MYPCH.pch的先行編譯頭檔。 編譯程式會使用其內容,將所有頭檔先行編譯的狀態還原為 ,包括 MYAPP.h。 編譯程式接著會編譯在 * 指示詞之後 #include "MYAPP.h"發生的程序代碼。

另請參閱

MSVC 編譯器選項
MSVC 編譯器命令列語法