繁体   English   中英

将通用文件包含在一个头文件中有什么好处?

[英]What's the benefit of including common files in one single header file?

我正在查看github上的doom3代码,我发现了一些不寻常的东西。 有几个文件只包含一个名为idlib / precompiled.h的文件,而且该文件包含了几个其他标题

...
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <assert.h>
#include <time.h>
#include <ctype.h>
#include <typeinfo>
#include <errno.h>
#include <math.h>
...

并编程标题

#include "../framework/BuildVersion.h"
#include "../framework/BuildDefines.h"
#include "../framework/Licensee.h"
#include "../framework/CmdSystem.h"
#include "../framework/CVarSystem.h"

我想知道是否有任何理由,因为这是我第一次看到这样的事情

这称为预编译头。 主要好处是大大提高了编译速度。

precompiled.h中的所有头文件每个项目只编​​译一次。 如果没有预编译头文件,每个头文件内容将被多次编译:对于每个.cpp文件,它都包含在内。

在使用源(pragma,guarding definitions)中使用include-once可以最好地使用依赖关系。 这涉及一个非常小的开销,因为你得到一个重复包括的树:包括一个标题,同时包括一个标题。

然而,对于标准库而言,有时组织得不那么好,并且提供标准的标题库这是最简单的。 它还反映了一种“模块”的想法,基本层的捆绑标题。

至于本地包括:它可能是非面向对象的懒惰,而不是表达依赖性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM