5
該問題涉及由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?
給予更多的上下文;如果只對解析樹進行預編譯,這意味着實例化模板的目標代碼仍然會在每個編譯單元中創建一次,從而導致編譯和鏈接時間的增加。因此,即使啓用了預編譯頭文件,「統一構建」/減少編譯單元仍然是減少構建時間的相關因素。