共用方式為


/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 開發環境中設定這個編譯器選項

  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 編譯器命令列語法