Share via


hdrstop pragma

讓您更充分掌控先行編譯檔案名,以及儲存編譯狀態的位置。

語法

#pragma hdrstop [ ( 「 filename 」 ) ]

備註

檔案名 是要使用或建立的先行編譯標頭檔的名稱(視指定 /Yu/Yc 指定而定)。 如果 filename 不包含路徑規格,則會假設先行編譯標頭檔位於與原始程式檔相同的目錄中。

如果 C 或 C++ 檔案在編譯 /Yc 時包含 hdrstoppragma ,編譯器會將編譯的狀態儲存到 的位置 pragma 。 未儲存任何後續 pragma 程式碼的編譯狀態。

使用 檔案名 來命名儲存編譯狀態的先行編譯標頭檔。 和 filename 之間的 hdrstop 空格是選擇性的。 中指定的 hdrstoppragma 檔案名是字串,而且受限於任何 C 或 C++ 字串的條件約束。 特別是,您必須以引號括住它,並使用逸出字元 (反斜線, \ ) 來指定目錄名稱。 例如:

#pragma hdrstop( "c:\\projects\\include\\myinc.pch" )

先行編譯標頭檔的名稱是根據下列規則來決定的,依照優先順序列出:

  1. 編譯器選項的 /Fp 引數

  2. 的 filename 引數 #pragma hdrstop

  3. 具有 PCH 副檔名之來源檔案的基底名稱

/Yc如果沒有 和 /Yu 選項或 hdrstoppragma 指定檔案名,則會使用來源檔案的基底名稱做為先行編譯標頭檔基底名稱。

您也可以使用前置處理命令來執行巨集取代,如下所示:

#define INCLUDE_PATH "c:\\progra~1\\devstsu~1\\vc\\include\\"
#define PCH_FNAME "PROG.PCH"
.
.
.
#pragma hdrstop( INCLUDE_PATH PCH_FNAME )

下列規則會控管可以放置 的位置 hdrstoppragma :

  • 它必須出現在所有資料或函式宣告或定義的外部。

  • 且必須在原始程式檔中,而不在標頭檔中指定。

範例

#include <windows.h>                 // Include several files
#include "myhdr.h"

__inline Disp( char *szToDisplay )   // Define an inline function
{
    // ...                           // Some code to display string
}
#pragma hdrstop

在此範例中, hdrstoppragma 會出現在包含兩個檔案且已定義內嵌函式之後。 這個位置一開始似乎是 的奇數位置 pragma 。 不過,請考慮使用手動先行編譯選項 和 /Yu/Ychdrstoppragma 讓您可以先行編譯整個原始程式檔,甚至是內嵌程式碼。 Microsoft 編譯器不會限制您只先行編譯資料宣告。

另請參閱

Pragma 指示詞和 __pragma_Pragma 關鍵字