hdrstop
讓您對先行編譯檔案名稱,以及儲存編譯狀態之位置進行其他控制。
#pragma hdrstop [( "filename" )]
備註
filename 是要使用或建立之先行編譯標頭檔的名稱 (取決於是否指定 /Yu 或 /Yc)。 如果 filename 不包含路徑規格,則會假設先行編譯的標頭檔位於與原始程式檔案相同的目錄。
如果 C 或 C++ 檔案包含 hdrstop pragma,當使用 /Yc 編譯時,編譯器儲存編譯狀態的位置取決於 pragma 的位置。 pragma 後方任何程式碼的編譯狀態都不會儲存。
使用 filename 為要儲存編譯狀態的先行編譯標頭檔命名。 hdrstop 和 filename 之間的空格是選擇性的。 在 hdrstop pragma 中指定的檔案名稱是一個字串,因此會受到任何 C 或 C++ 字串條件約束的限制。 請特別注意,您必須使用引號將其括住,以及使用逸出字元 (反斜線) 來指定目錄名稱。 例如:
#pragma hdrstop( "c:\\projects\\include\\myinc.pch" )
先行編譯標頭檔的名稱是根據下列規則來決定的,依照優先順序列出:
/Fp 編譯器選項的引數。
#pragma hdrstop 的 filename 引數
原始程式檔副檔名為 .PCH 的主檔名。
對於 /Yc 和 /Yu 選項,如果兩個編輯選項和 hdrstop pragma 中都未指定檔案名稱,則會使用原始程式檔的主檔名做為先行編譯標頭檔的主檔名。
您也可以使用前置處理命令來執行巨集取代,如下所示:
#define INCLUDE_PATH "c:\\progra~`1\\devstsu~1\\vc\\include\\"
#define PCH_FNAME "PROG.PCH"
.
.
.
#pragma hdrstop( INCLUDE_PATH PCH_FNAME )
下列規則用於管理可放置 hdrstop pragma 的位置:
它必須出現在所有資料或函式宣告或定義的外部。
且必須在原始程式檔中,而不在標頭檔中指定。
範例
#include <windows.h> // Include several files
#include "myhdr.h"
__inline Disp( char *szToDisplay ) // Define an inline function
{
... // Some code to display string
}
#pragma hdrstop
在此範例中,hdrstop pragma 出現在兩個已包含及已定義內嵌函式的檔案之後。 一開始可能無法理解為什麼要在這個位置放置 pragma。 不過,考量到會使用手動先行編譯選項 /Yc 和 /Yu,因此使用 hdrstop pragma 可讓您先行編譯整個原始程式檔 (包括內嵌程式碼)。 Microsoft 編譯器並不會限制您只先行編譯資料宣告。