【发布时间】:2016-08-21 04:08:19
【问题描述】:
假设我有一个名为foo.h 的头文件,它包含另一个头文件bar.h。
我还有一个名为xyz.h 的头文件。它需要foo.h 和bar.h,尽管foo.h 和bar.h 彼此无关,所以我会觉得很奇怪只是 包含foo.h(它仍然可以编译,因为它包括bar.h...
所以,foo.h 包括 bar.h,bar.h 不 包括 foo.h,但 xyz.h 确实 包括 foo.h 和 @987654339 @。这是不好的做法吗?有什么理由我不应该吗?为什么我能做到这一点?
【问题讨论】:
-
这是常见的做法。您并不总是知道标头包含哪些其他头文件,因此您包含所有您需要的头文件。 #include guards 防止出现两次包含相同标题的问题。
-
每个头文件都应该包含 所有 it 需要的头文件,而忽略它们是否可能会通过另一个头文件偶然包含(因为这可能会改变)。
-
通过搜索引擎查找“包括您使用的内容”。它应该会显示include-what-you-use.org 和github.com/include-what-you-use/include-what-you-use 以及其他引用。
-
@JonathanLeffler 这看起来真的很有用,谢谢你的链接!
-
"...foo.h,它包含另一个标题 bar.h。... ...虽然 foo.h 和 bar.h 彼此无关。" - 这很奇怪。 如果
foo.h和bar.h彼此无关,那你为什么要在foo.h中包含bar.h?
标签: c++ c coding-style