/Yu
(使用先行編譯標頭檔)
指示編譯器在目前的編譯中使用現有的先行編譯頭 ( .pch
) 檔案。
語法
/Yu
[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"
發生的程式碼。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應