#include包含的头文件已包含的头文件是否普遍可行?

Kar*_*ten 0 c c++ dependencies include dependency-management

假设我们有一个头文件A.h,它依赖于B.h和中声明的内容C.hB.h也取决于C.h,因此也包括在内。在这种情况下,我们不需要包含C.h进去A.h,没有它就可以编译。

但是我想知道在这些情况下最好的行动方案是什么。如果B.h以某种方式更改并且不再依赖C.hA.h则会中断。

另一方面,如果我认为到最后,重新包含所有单个依赖关系似乎是不必要/不切实际的。

我常见的情况是标准库。在几乎所有的头文件中,我都必须包含<stdint.h><stdbool.h>。我经常跳过它,因为它们已经包含在其中一个依赖项中,但这总是感觉有些武断。

Lig*_*ica 5

如果Bh有所改变并且不再依赖于Ch,则Ah会中断。

究竟。为什么要抓住机会?

另一方面,如果我认为到最后,重新包含所有单个依赖关系似乎是不必要/不切实际的。

如果不切实际,则文件具有过多的依赖关系,并且可能太大。

将其重构为较小的模块。

我常见的情况是标准库。在几乎所有的头文件中,我都必须包含<stdint.h><stdbool.h>。我经常跳过它,因为它们已经包含在其中一个依赖项中,但这总是感觉有些武断。

当我知道其中一个标头(明确定义为将所需的类型带入范围)时,我承认有时会跳过这些操作。它不太可能被重构,因为它具有这些标头是出于这个原因,而不是因为其他一些可能消失的依赖关系。

但是,归根结底,在需要的地方包含内容<stdint.h>并没有错<stdbool.h>。老实说,我惊讶地发现您需要“几乎所有[您的]头文件”中的文件。