【发布时间】:2019-11-01 00:06:00
【问题描述】:
假设我们有一个头文件A.h,它依赖于B.h 和C.h 中声明的内容。 B.h 也依赖于 C.h,因此包含它。
在这种情况下,我们不需要在A.h 中包含C.h,没有它它也能正常编译。
但我想知道在这些情况下最好的行动方案是什么。如果B.h 发生某种变化并且不再依赖于C.h,A.h 将会中断。
另一方面,如果我认为直到最后,重新包含每个依赖项似乎是不必要/不切实际的。
我的一个常见案例是标准库。在我几乎所有的头文件中,我都必须包含<stdint.h> 和<stdbool.h>。我经常跳过这个,因为它们已经包含在其中一个依赖项中,但这总是让人觉得有点武断。
【问题讨论】:
-
使用正确编写的带有包含保护的标头,标头被间接包含多少次并不重要。虽然,通过前向声明,您通常可以在大多数情况下减少依赖关系。
-
如果文件依赖头文件中的符号,则应该直接包含头文件,而不是间接包含头文件。 包括您使用的内容:include-what-you-use.org
标签: c++ c dependencies include dependency-management