【发布时间】:2011-06-13 00:14:43
【问题描述】:
问题涉及由 Visual Studio 编译器创建的 .pch 二进制文件的内容。 它包含什么? 只是头文件的解析树,还是目标代码?
考虑这个例子:
// myheader.h
#include <vector>
class A {
public:
void add(int i) { v.push_back(i); }
private:
std::vector<int> v;
};
在要预编译的集合中包含此标头会导致矢量
提供更多上下文;如果只预编译解析树,这意味着实例化模板的目标代码仍将在每个编译单元创建一次,从而增加编译和链接时间。因此,即使启用了预编译头文件,“统一构建”/减少编译单元仍然是减少构建时间的一个相关因素。
【问题讨论】:
标签: c++ visual-studio templates precompiled-headers