Pytanie dotyczy zawartości pliku binarnego .pch utworzonego przez kompilator Visual Studio. Co zawiera? Czy jest to tylko parsowane drzewo plików nagłówkowych, czy też kod obiektowy?Co zawierają prekompilowane nagłówki Visual Studio?
Rozważmy następujący przykład:
// myheader.h
#include <vector>
class A {
public:
void add(int i) { v.push_back(i); }
private:
std::vector<int> v;
};
Czy tym ten nagłówek w zestawie zostać skompilowane doprowadzić do całkowitego konkretyzacji szablonu wektora <int> opracowywane i dodawane do .pch?
Dać trochę więcej kontekstu; jeśli tylko drzewo analizy jest prekompilowane, oznacza to, że kod obiektu dla utworzonych szablonów będzie nadal tworzony raz na jednostkę kompilacji, co spowoduje zwiększenie czasu kompilacji i łączenia. Tak więc "budowanie jedności"/redukowanie jednostek kompilacji nadal będzie istotnym czynnikiem skracającym czas budowania nawet przy włączonych prekompilowanych nagłówkach.