如果我有多个文件#include
彼此以及所有#include <iostream>
,这被认为是坏的,如果是这样,我将如何避免它?
答案 0 :(得分:12)
不,它没有任何问题。需要直接使用<iostream>
功能的每个文件都应直接包含它。头部防护装置将处理多种内含物。
当您具有循环依赖关系时,可能存在问题。例如,请参阅此问题:Resolve header include circular dependencies
但是,由于<iostream>
不太可能包含或取决于您的任何文件,因此在这种情况下循环依赖性不是问题。
答案 1 :(得分:2)
第一个问题是你是否真的需要来包含iostream
。在大多数情况下,标题实际上并不需要iostream
,而是较小的ostream
(不需要cin
,cout
...只需std::ostream&
类型operator<<
)。即使在那里,正确的标题将是iosfwd
,它只包含这些元素的前向声明。
当然,除非您需要对类型或真实iostream进行完整声明,否则只需包含它们。
答案 2 :(得分:1)
不,这不是问题。我至少从来没有听说过。
预处理器应该完成所需的工作,我认为让每个需要<iostream>
的类/源文件包含它都是一种好方法。
因此,每个人都知道此文件使用iostream
提供的功能。
顺便说一句:using namespace std;
在任何情况下都应该避免,以确保每个人都能看到相应的使用名称空间。
答案 3 :(得分:0)
这样做没有问题,有include guard,确保只包含一次标准头文件
答案 4 :(得分:0)
只要您确保没有太多标头堆叠在一起,就不会出现问题。太多而某些操作系统无法处理它,即较旧的操作系统。但除非你有一台装有旧软件的古老电脑,否则应该完全没问题!祝你好运!