.c文件是否应包含其已包含的.h文件?

时间:2018-03-23 02:57:33

标签: c++ header-files

以下是Google's C++ style guide#include的一部分:

  

如果您依赖bar.h中的符号,请不要指望您包含foo.h这个(当前)包含bar.h:自己包含bar.h,除非foo.h明确说明意图为您提供bar.h的符号。

     

但是,相关标题中存在的任何包含不需要再次包含在相关的cc中(即,foo.cc可以依赖于foo.h' s包括)。

当我读到这篇文章时,这些​​句子似乎是矛盾的。他们对我说:

  1. 如果foo.cc需要bar.h中的内容,则必须包含bar.h
  2. 如果foo.cc需要bar.h中的内容,foo.cc包含foo.hfoo.h包含bar.h,则foo.cc不需要包含bar.h
  3. 为什么这些句子不相矛盾?

1 个答案:

答案 0 :(得分:7)

第二段讨论了一个特例:实现相应.cc文件中声明的函数的.h文件。由于.cc.h文件旨在密切相关并保持串联(通常由同一个程序员),.cc文件可能取决于其相关头文件中的内容。 / p>

第一段是讨论包含头文件的其他文件。

因此foo.cc取决于foo.h中的包含,但bar.cc应包括foo.hbaz.h