以下是Google's C++ style guide中#include
的一部分:
如果您依赖bar.h中的符号,请不要指望您包含foo.h这个(当前)包含bar.h:自己包含bar.h,除非foo.h明确说明意图为您提供bar.h的符号。
但是,相关标题中存在的任何包含不需要再次包含在相关的cc中(即,foo.cc可以依赖于foo.h' s包括)。
当我读到这篇文章时,这些句子似乎是矛盾的。他们对我说:
foo.cc
需要bar.h
中的内容,则必须包含bar.h
。foo.cc
需要bar.h
中的内容,foo.cc
包含foo.h
,foo.h
包含bar.h
,则foo.cc
不需要包含bar.h
。为什么这些句子不相矛盾?
答案 0 :(得分:7)
第二段讨论了一个特例:实现相应.cc
文件中声明的函数的.h
文件。由于.cc
和.h
文件旨在密切相关并保持串联(通常由同一个程序员),.cc
文件可能取决于其相关头文件中的内容。 / p>
第一段是讨论包含头文件的其他文件。
因此foo.cc
取决于foo.h
中的包含,但bar.cc
应包括foo.h
和baz.h
。