我可以依赖嵌套的#includes吗?

时间:2011-06-22 11:16:27

标签: c++ include c-preprocessor include-path

  

可能重复:
  C++ style question: what to #include?

当我#include一个头文件,并且我还需要其他已经从第一个文件#included的文件时,我应该依赖第一个#include还是{i} #include他们?

我知道它无论如何都会奏效,但我想知道什么是最佳做法。

如果我不依赖,这意味着我可以在我的文件中列出几十个#includes。它有意义吗?

4 个答案:

答案 0 :(得分:5)

好吧,如果其他人正在维护第一个头文件,那么不,你不能依赖它!

正是出于这个原因,我更喜欢在源文件中明确包含所有依赖项(即声明直接使用的符号的标题)。不过,我怀疑你会找到一个真正的最佳实践。每种方法都有利弊。

但是一旦你选择了一种方法,请一致地应用它!没有什么比一个不同包含风格的混搭项目更糟糕了。

答案 1 :(得分:2)

这取决于您设计的政策。我总是遵循以下一个:

在标头中,始终包含使用干净的.c / .cpp文件编译该标头所需的任何内容。

在实施文件中,始终包含直接使用的所有内容。

答案 2 :(得分:1)

您应该只包含课程的基本头文件。但即使您碰巧包含了您的文件,您的头文件也会包含gaurds,这些gaurds应该来自多个包含内容。

答案 3 :(得分:1)

  

当我#include一个头文件时,我   还需要其他文件   #included来自第一个,我应该依赖第一个#include还是我应该   #include所有这些?

通常不会,因为头文件拖入的头文件通常是实现细节。

但是,实际上不可能编写包含所有平台所有必需标头的代码。特别是在C ++中,标准库头可以在标准库的其他头文件中自由拖动。例如,您的代码可能会编译,因为您不知道<iostream>编译器拖拽<string>

因此,合理地包括所有相关标题是合理的,因为这意味着,这样做的不合理努力是不合理的。 : - )

干杯&amp;第h。,