我见过相当多的项目(通常是游戏引擎),所有的头文件都放在一个单独的头文件中,有时也包含宏等。
// Master.h
#include "header1.h"
#include "header2.h"
#include "header3.h"
.
.
#include "headerN.h"那么在使用代码时,标准就是只包含Master.h文件。
其他项目的工作基础是源文件应该只包含它们需要的头文件。
我想知道的是,对于最佳实践,是否有一个明确的答案,最好是有可衡量的结果,或者是个人偏好?
发布于 2013-03-28 00:51:09
大多数答案都提到了编译时间,而忽略了这样一个事实,即预编译头文件具有巨大的编译时间优势,并且使用主头文件技术效果要好得多。
最好是,如果直接包含在没有主头文件的情况下,您的头文件应该可以工作(这使得测试更容易)。现代编译器已经优化了“如果包含多个文件则跳过头文件”的逻辑。
发布于 2013-03-28 00:47:50
从编译时间的角度来看,这绝对是一种糟糕的做法,因为每次修改文件或接触任何包含的头文件时,都必须从头开始重新编译项目。
根据经验,您应该在源文件中包含尽可能少的头文件。然而,我可以看到一些情况下,这可能会派上用场,因为第三方库不会经常更改
发布于 2013-03-28 00:47:58
由于编译C++的成本很高,而且特别慢,我想说,如果有很多头文件(或者有很多实现文件,而这些文件又包含了头文件),那么通过避免不必要地包含未使用的头文件,可以避免一些额外的预处理和解析时间。
这是针对库的实现的(您提到游戏引擎使我认为我们在这里谈论的是库)。现在,为了方便起见,您可以创建一个“主”包含文件,包括那些使用库并希望所有内容都放在一个地方的用户(而不是同时拥有数千个文件)。
https://stackoverflow.com/questions/15664393
复制相似问题