如何避免在多个文件中重新包含<iostream>?</iostream>

时间:2014-01-07 19:40:51

标签: c++

如果我有多个文件#include彼此以及所有#include <iostream>,这被认为是坏的,如果是这样,我将如何避免它?

5 个答案:

答案 0 :(得分:12)

不,它没有任何问题。需要直接使用<iostream>功能的每个文件都应直接包含它。头部防护装置将处理多种内含物。

当您具有循环依赖关系时,可能存在问题。例如,请参阅此问题:Resolve header include circular dependencies

但是,由于<iostream>不太可能包含或取决于您的任何文件,因此在这种情况下循环依赖性不是问题。

答案 1 :(得分:2)

第一个问题是你是否真的需要来包含iostream。在大多数情况下,标题实际上并不需要iostream,而是较小的ostream(不需要cincout ...只需std::ostream&类型operator<<)。即使在那里,正确的标题将是iosfwd,它只包含这些元素的前向声明。

当然,除非您需要对类型或真实iostream进行完整声明,否则只需包含它们。

答案 2 :(得分:1)

不,这不是问题。我至少从来没有听说过。

预处理器应该完成所需的工作,我认为让每个需要<iostream>的类/源文件包含它都是一种好方法。

因此,每个人都知道此文件使用iostream提供的功能。

顺便说一句:using namespace std;在任何情况下都应该避免,以确保每个人都能看到相应的使用名称空间。

答案 3 :(得分:0)

这样做没有问题,有include guard,确保只包含一次标准头文件

答案 4 :(得分:0)

只要您确保没有太多标头堆叠在一起,就不会出现问题。太多而某些操作系统无法处理它,即较旧的操作系统。但除非你有一台装有旧软件的古老电脑,否则应该完全没问题!祝你好运!