hdrstop
Daje dodatkową kontrolę nad nazwami plików kompilacji wstępnej oraz nad lokalizacją, w której zapisywany jest stan kompilacji.
#pragma hdrstop [( "filename" )]
Uwagi
Filename jest nazwą skompilowanego wstępnie pliku nagłówkowego, który ma być użyty lub utworzony (w zależności od tego czy określony został parametr /Yu, czy /Yc).Jeśli filename nie zawiera specyfikacji ścieżki, zakłada się, że wstępnie skompilowany plik nagłówkowy jest w tym samym katalogu co plik źródłowy.
Jeśli plik języka C lub C++ zawiera dyrektywę hdrstop podczas kompilacji z parametrem /Yc, kompilator zapisuje stan kompilacji do lokalizacji dyrektywy.Nie jest zapisywany skompilowany stan dowolnego kodu, który następuje po dyrektywie.
Użyj filename, aby nazwać skompilowany wstępnie plik nagłówkowy, w którym zostanie zapisany stan kompilacji.Odstęp między hdrstop i filename jest opcjonalny.Nazwa pliku określona w dyrektywie hdrstop jest ciągiem i dlatego podlega ograniczeniom ciągów języka C lub C++.W szczególności, musisz ująć go w znaki cudzysłowu i używać znaku ucieczki (ukośnik odwrotny), aby określić nazwy katalogów.Na przykład:
#pragma hdrstop( "c:\\projects\\include\\myinc.pch" )
Nazwa wstępnie skompilowanego pliku nagłówkowego jest określana zgodnie z następującymi regułami, w kolejności priorytetów:
Argument opcji kompilatora /Fp
Argument filename dyrektywy #pragmahdrstop
Nazwa podstawowa pliku źródłowego z rozszerzeniem .PCH
Jeśli nazwa pliku nie została określona przez żadną z dwóch opcji kompilacji /Yc i /Yu ani przez dyrektywę hdrstop, jako nazwa podstawowa wstępnie skompilowanego pliku nagłówkowego jest używana nazwa podstawowa pliku źródłowego.
Możesz również użyć poleceń przetwarzania wstępnego, aby wykonać makro zastępujące w następujący sposób:
#define INCLUDE_PATH "c:\\progra~`1\\devstsu~1\\vc\\include\\"
#define PCH_FNAME "PROG.PCH"
.
.
.
#pragma hdrstop( INCLUDE_PATH PCH_FNAME )
O miejscu umieszczenia dyrektywy hdrstop decydują następujące reguły:
Musi znajdować się poza wszelkimi deklaracjami i definicjami danych lub funkcji.
Musi być określona w pliku źródłowym, a nie w pliku nagłówkowym.
Przykład
#include <windows.h> // Include several files
#include "myhdr.h"
__inline Disp( char *szToDisplay ) // Define an inline function
{
... // Some code to display string
}
#pragma hdrstop
W tym przykładzie, dyrektywa hdrstop pojawia się po dołączeniu dwóch plików oraz po zdefiniowaniu funkcji w tekście.Pozornie, może wydawać się to dziwnym miejscem dla dyrektywy.Rozważ jednak, że używanie ręcznych opcji kompilacji wstępnej /Yc i /Yu z dyrektywą hdrstop sprawia, ż możliwa jest wstępna kompilacja całych plików źródłowych – nawet kodu w tekście.Kompilator firmy Microsoft nie ogranicza do kompilacji wstępnej tylko deklaracji danych.