Ant*_*ong 14 c++ dependencies header effective-c++
在本章中,Scott Meyer提到了一些避免头文件依赖性的技术.主要目标是避免在更改仅限于其他包含的头文件时重新编译cpp文件.
我的问题是:
在我过去的项目中,我从未关注过这条规则.编译时间不短,但不能容忍.它可能与我的项目的规模(或缺乏)有关.鉴于编译器技术的进步(例如clang),今天的技巧有多实用?
我在哪里可以找到更多使用这种技术的例子?(例如Gnome或其他OSS项目)
PS我正在使用第2版.
小智 14
我不认为编译器技术特别有进步.clang不是一些魔法 - 如果你有依赖关系然后你做了更改,那么必须重新编译依赖代码.这可能需要非常长的时间 - 大型项目的阅读时间甚至数天,因此人们尽可能地尽量减少这种依赖性.
话虽如此,有可能过度使用 - 将所有类转换为PIMPL,转发声明所有内容等.这样做只会导致代码混淆,应尽可能避免.
Ale*_* C. 14
减少编译时间是一种红色鲱鱼,是一种过早优化的形式.重新组织代码以减少编译时间(当这很重要时)可以完成,但是以某种方式付出了巨大代价.
至于Gnome,Gnome在每个GObject中都有一个"私有指针".这实现了pimpl习语.这减少了源文件之间的依赖关系,并允许某种形式的封装.C项目的编译时问题较少.
现代C++设计大量使用模板,这不可避免地使您的编译时间飙升.使用pimpl习惯用法并转发声明类(而不是在可能的情况下包括标题)可以减少翻译单元之间的逻辑依赖性(这是一件好事),但在许多情况下并没有真正帮助编译时.
使用boost大大增加了编译时间(请注意,如果在许多源文件中间接包含boost标头),并且许多C++项目都使用它.
我还应该提一下,瘦模板习惯用法通常用于减少模板的代码膨胀.
| 归档时间: |
|
| 查看次数: |
1821 次 |
| 最近记录: |