#include <iostream> 在多个文件中

Sha*_*han 5 c++ iostream include

我希望这个网站以前没有被问过。我无法从谷歌找到可靠的答案。

在项目的多个文件中#include iostream 时会发生什么?我总是在我的头文件中使用 #ifndef 和 #define。这是否会阻止 iostream 被多次包含?

lve*_*lla 5

我对这个问题有两种解释:

  1. 您可以iostream在同一个编译单元中多次包含吗?
    • 是的,安全。所有标准标头都包含保护,以便安全地使用。
  2. 在您的代码中使用包含保护自己会防止iostream被多次包含吗?
    • 当然,它也可以防止编译器多次看到#ifndefand之间的所有内容#endif(或在标有 的标头中#pragma once,在支持它的编译器中)... 但这对于 来说并不是真正需要的#include <iostream>,因为它已经防止了多个包含。


cla*_*ark 3

正如克里斯和哈罗根所说,是的,他们会阻止这种情况发生。#ifndef 和 #define 是预处理器指令,翻译成英文

#ifndef(如果未定义)

#定义(定义)

因此,如果您创建一个标头,并 #include "myheader.h" 两次,那么该文件将不会再次被包含,因为您将其包含在 if 语句中,这将导致该文件仅在它具有时才被包含(和定义)尚未包含(定义)。