指示編譯程式在目前的編譯中使用現有的先行編譯頭 (.pch) 檔案。
語法
/Yu[filename]
引數
filename
標頭檔的名稱,其包含在原始程式檔中使用 #include 預處理器指示詞。
備註
針對建立先行編譯標頭的選項,以及表示使用先行編譯標頭的任何更新/Yu選項,包含檔案的名稱必須相同/Yc。
針對/Yc,filename 會指定先行編譯停止的點;編譯程式會先行編譯所有程序代碼,但會使用 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 開發環境中設定這個編譯器選項
在專案中的.cpp檔案上指定
/Yc(建立先行編譯頭檔 )。開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性。
選取 [設定屬性>C/C++][>編譯標頭] 屬性頁。
修改先行編譯的 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"發生的程序代碼。