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

C++ 如何避免重新包含<;iostream>;在多个文件中?,c++,C++,如果我有多个相互包含的文件,以及所有包含的文件,这是否被认为是不好的,如果是,我将如何避免它?不,没有问题。每个需要直接使用功能的文件都应该直接包含它。收割台护罩将处理多个夹杂物 如果存在循环依赖项,则可能会出现问题。例如,请参见以下问题: 但是,由于不太可能包含或依赖于您的任何文件,因此循环依赖关系在这种情况下不是问题。这样做没有问题,有问题,这确保了标准头文件只包含一次。不,这不是问题。我至少从来没有听说过 预处理器应该完成所需的工作,我认为让每个类/源文件都需要来包含它也是一种很好的方式

如果我有多个相互包含的文件,以及所有包含的文件,这是否被认为是不好的,如果是,我将如何避免它?

不,没有问题。每个需要直接使用
功能的文件都应该直接包含它。收割台护罩将处理多个夹杂物

如果存在循环依赖项,则可能会出现问题。例如,请参见以下问题:


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

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

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

预处理器应该完成所需的工作,我认为让每个类/源文件都需要
来包含它也是一种很好的方式

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


顺便说一下:
使用名称空间std,以确保每个人都能看到相应的已用名称空间。

第一个问题是您是否真的需要包含
iostream
。在大多数情况下,头并不真正需要
iostream
,但较小的
ostream
(不需要
cin
cout
…只需要
std::ostream&
类型
操作符就不成问题,只要你确保彼此之间没有太多的头。太多和某些操作系统无法处理它,即较旧的操作系统。但除非你有一台使用非常旧软件的旧计算机,否则它应该是最好的很好!祝你好运!

这样做通常没有问题。你为什么要避免它?通常头文件由预处理器保护。这很好,尽管大规模执行会导致循环依赖性…(这可以“修复”)将有问题的#include放入cpp文件中。@Idov-如果使用预处理器,则不应guards@EdHeal:如果file1.h需要知道file2.h中的类,file2.h需要知道file1.hSo中的类,那么我认为它们不会有帮助。它不会多次添加内容吗?如果包含,我自己编写的文件不需要保护吗多次ded?这通常是一个好主意,但解决了另一个问题,即您的符号没有多次定义。即使您的标题中没有使用防护装置,
也由自身防护,因此这对于
(通常是库中的任何其他标题)来说不是问题.我明白了,所以库文件是自动防护的?谢谢。不是自动防护的,但通常库会为您这样做,所以您不必关心它们的文件的多个包含;只关心您自己的文件。我从未见过一个库不使用头防护,除了用于预处理器黑客攻击的多次包含的文件。B请避免任何人误解:上面的讨论是关于iostream是一个头文件,以及它应该如何具有头保护以防止代码中包含冗余内容。但是,您不希望在自己的头中包含iostream!只在头中包含头本身依赖的内容。iostream通常只应包含包含在实现文件(.cpp/.cxx)中。如果标头取决于iostream中的类型,请在标头中包含iosfwd(较小)。有关详细信息,请参阅: