/Yu
(使用先行編譯頭檔)
指示編譯程式在目前的編譯中使用現有的先行編譯頭 (.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"
發生的程序代碼。