我正在将我的 C++ 应用程序的一部分从使用较旧的 C 类型数组更改为模板化的 C++ 容器类。有关详细信息,请参阅 此问题。虽然该解决方案运行良好,但我对模板化代码所做的每一个小改动都会导致大量的重新编译发生,从而大大减慢了构建时间。有没有办法从头文件中获取模板代码并返回到 cpp 文件中,以便小的实现更改不会导致重大重建?
原文由 SmacL 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在将我的 C++ 应用程序的一部分从使用较旧的 C 类型数组更改为模板化的 C++ 容器类。有关详细信息,请参阅 此问题。虽然该解决方案运行良好,但我对模板化代码所做的每一个小改动都会导致大量的重新编译发生,从而大大减慢了构建时间。有没有办法从头文件中获取模板代码并返回到 cpp 文件中,以便小的实现更改不会导致重大重建?
原文由 SmacL 发布,翻译遵循 CC BY-SA 4.0 许可协议
几种方法:
void*
;所有的复杂性都在 void*
位于 .cpp 文件中的向量中。 Scott Meyers 在 Effective C++ 中给出了一个更详细的示例(第 2 版中的第 42 项,“明智地使用私有继承”)。原文由 Josh Kelley 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
我认为一般规则适用。尽量减少部分代码之间的耦合。将太大的模板头分解成较小的函数组一起使用,这样就不必将整个内容包含在每个源文件中。
此外,尝试使标头快速进入稳定状态,也许可以针对较小的测试程序对其进行测试,这样在集成到较大的程序中时就不需要更改(太多)。
(与任何优化一样,在处理模板时优化编译器的速度可能更不值得,而不是首先找到一种“算法”优化来大幅减少工作量。)