分享方式:


hdrstop pragma

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

語法

#pragma hdrstop [ ( “filename” ) ]

備註

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

如果 C 或 C++ 檔案在編譯時包含 hdrstoppragma ,則編譯程式會將編譯的狀態儲存至 的位置pragma。/Yc 未儲存任何後續 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/Yc hdrstoppragma讓您可以先行編譯整個原始程序檔,甚至是內嵌程序代碼。 Microsoft編譯程式不會限制您只先行編譯數據宣告。

另請參閱

Pragma 指示詞和 __pragma_Pragma 關鍵詞