#pragma hdrstop to dyrektywa specyficzna dla kompilatora, która wskazuje, gdzie kończy się część nagłówkowa kodu, która ma być prekompilowana. Jej głównym celem jest 
przyspieszenie kompilacji, zwłaszcza w projektach wieloplikowych, gdzie wiele plików źródłowych może zawierać te same nagłówki.  
### 
Dlaczego działa?  Przy użyciu 
#pragma hdrstop
, kompilator:  
- Przetwarza wszystkie nagłówki przed tą dyrektywą jako 
precompiled header.  
- Ignoruje nagłówki po niej, co unika ponownego przetwarzania tych samych plików w każdym pliku źródłowym.  
### 
Gdzie wstawiać?  Najlepszym miejscem jest 
pierwsza część nagłówków wspólnych dla całego projektu. Przykład:  
  
#include <windows.h>  
#include <vcl.h>  
#pragma hdrstop  
#include "Unit1.h"  
#include "Logger.h"  
  Nagłówki przed 
#pragma hdrstop
 powinny być identyczne we wszystkich plikach źródłowych. W przeciwnym razie kompilator nie będzie mógł skorzystać z prekompilacji.  
### 
Efekty uboczne i błędy  - **Zła lokalizacja**: Jeśli dyrektywa jest wstawiona po nagłówkach specyficznych dla danego pliku, kompilator nie będzie mógł prekompilować tych nagłówków, co może spowolnić kompilację.  
- **Często modyfikowane nagłówki**: Jeśli nagłówki przed 
#pragma hdrstop
 są często zmieniane, prekompilacja zostanie ponownie generowana, co może 
niwelować korzyści.  
- **Błędy linkowania**: Występują rzadko, ale mogą się pojawić, jeśli nagłówki po 
#pragma hdrstop
 są niezgodne z definicjami w innych plikach.  
### 
Dobry praktyki  - Umieszczaj 
#pragma hdrstop
 przed nagłówkami wspólnymi (np. 
<windows.h>
).  
- Po niej dołączaj nagłówki specyficzne dla danego pliku.  
- Unikaj jej użycia w nagłówkach, które często zmieniają się (np. w projekcie z intensywnym użyciem szablonów).  
### 
Praktyczny przykład  W Borlandzie C++ Builder:  
  
#include <vcl.h>  
#pragma hdrstop  
#include "Unit1.h"  
#pragma package(smart_init)  
#pragma resource "*.dfm"  
TForm1 *Form1;  
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {}  
  Takie rozmieszczenie zapewnia, że 
<vcl.h>
 jest prekompilowany, a 
"Unit1.h"
 przetwarzany osobno.  
### 
Szablony i optymalizacja  Szablony (np. 
std::vector<int>
) są rozszerzane w czasie kompilacji. Jeśli są umieszczone po 
#pragma hdrstop
, nie skorzystają z prekompilacji. Dlatego warto je dołączać przed tą dyrektywą, jeśli są wspólnymi elementami projektu.  
### 
Podsumowanie  - 
#pragma hdrstop
 działa, ale wymaga 
starannego planowania struktury projektu.  
- W praktyce przyspiesza kompilację o 
2–3%, jak stwierdził "UserX".  
- Najlepsze wyniki daje w projektach z dużą liczbą wspólnych nagłówków i małą liczbą zmian w tych nagłówkach.  
Warto eksperymentować z lokalizacją tej dyrektywy i obserwować czas kompilacji, aby zoptymalizować pod kątem danego projektu.