質問は、Visual Studioコンパイラによって作成された.pchバイナリの内容に関係します。 何が入っていますか? ヘッダーファイルまたはオブジェクトコードの解析されたツリーだけですか?Visual Studioのプリコンパイル済みヘッダーには何が含まれていますか?
この例を考えてみます。このヘッダを含む
// myheader.h
#include <vector>
class A {
public:
void add(int i) { v.push_back(i); }
private:
std::vector<int> v;
};
なるセットプリコンパイルされる結果にベクトル<INT>の完全なテンプレートのインスタンスにコンパイルされ、.PCHに追加されますか?
もう少し文脈を与える。解析ツリーのみがプリコンパイルされている場合、インスタンス化されたテンプレートのオブジェクトコードはコンパイル単位ごとに1回作成され、コンパイルおよびリンク時間が増加します。したがって、コンパイル単位を減らしてもコンパイル単位を減らすことは、プリコンパイルされたヘッダーが有効になっていても効果があります。