先行編譯程式碼的兩個選擇
更新:2007 年 11 月
使用 Visual C++,您可先行編譯任何 C 或 C++ 程式碼;並不限於只能先行編譯標頭檔。
先行編譯需要事先規劃,但若是您先行編譯原始程式碼 (而非簡單標頭檔),則它可提供速度大幅提升的編譯作業。
當您知道您的原始程式檔使用標頭檔的通用集,但不以相同順序加以併入時,或是您要在先行編譯中包含原始程式碼時,請先行編譯程式碼。
先行編譯標頭選項為 /Yc (建立先行編譯標頭檔) 和 /Yu (使用先行編譯標頭檔)。使用 /Yc,建立先行編譯標頭。在配合選擇性 (Optional) 的 hdrstop Pragma 使用時,/Yc 可讓您先行編譯標頭檔和原始程式碼。選取 /Yu 選項,可使用現有編譯中現有的先行編譯標頭。您也可以使用 /Fp 配合 /Yc 和 /Yu 選項,以提供先行編譯標頭的替代名稱。
/Yu 和 /Yc 的編譯器選項參考主題會探討如何在開發環境中存取這項功能。
建置 PCH 檔
您可以相當簡單的方式使用一個 PCH 建置 (Build) 另一個 PCH。
cl -c -Yc"stuff.h" -Fplevel1.pch level1.cpp
cl -c -Yu"stuff.h" -Fplevel1.pch -Yc level2.cpp
level2.cpp 檔類似下列:
#include "stuff.h"
#include "morestuff.h"
#pragma hdrstop("level2.pch")
下列命令將會建置 level2.pch,其可用於進一步的編譯:
cl -c -Yu"morestuff.h" -Fplevel2.pch mysource.cpp
請注意,您只需將 #pragma hdrstop 指示詞置於建置第二個 PCH 的檔案中;您不必將其置於所有使用 PCH 的 .cpp 檔中。在命令行中,使用 PCH 的檔案可命名 morestuff.h 檔 (這樣您就不必編輯所有的檔案來加以使用)。無論是自動或手動先行編譯程式碼的方法,都會將產生的先行編譯程式碼儲存在先行編譯標頭裡。
詳細資訊
如需使用先行編譯標頭的進一步範例,請參閱用來建置隨附 MFC 程式庫之範例程式的 Makefile。