hdrstop
pragma
讓您更充分掌控先行編譯檔名,以及儲存編譯狀態的位置。
語法
#pragma hdrstop
[ ( “filename” ) ]
備註
檔名是要使用或建立的先行編譯頭檔的名稱(視指定/Yu
或/Yc
指定而定)。 如果 filename 不包含路徑規格,則會假設先行編譯頭檔位於與原始程式檔相同的目錄中。
如果 C 或 C++ 檔案在編譯時包含 hdrstop
pragma ,則編譯程式會將編譯的狀態儲存至 的位置pragma。/Yc
未儲存任何後續 pragma 程式代碼的編譯狀態。
使用 檔名 來命名儲存編譯狀態的先行編譯頭檔。 和 filename 之間的hdrstop
空格是選擇性的。 中指定的 hdrstop
pragma 檔名是字串,而且受限於任何 C 或 C++ 字串的條件約束。 特別是,您必須以引號括住它,並使用逸出字元 (反斜杠, \
) 來指定目錄名稱。 例如:
#pragma hdrstop( "c:\\projects\\include\\myinc.pch" )
先行編譯標頭檔的名稱是根據下列規則來決定的,依照優先順序列出:
編譯程式選項的
/Fp
自變數要 的 filename 自變數
#pragma hdrstop
具有 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。 不過,請考慮使用手動先行編譯選項 和/Yu
, /Yc
hdrstop
pragma讓您可以先行編譯整個原始程序檔,甚至是內嵌程序代碼。 Microsoft編譯程式不會限制您只先行編譯數據宣告。