<iostream> #include 中和"iostream"(引号)之间的区别?

Difference between <iostream> and "iostream" (quotes) in #include?

本文关键字:iostream 之间 区别 gt #include 中和 lt 引号      更新时间:2023-10-16

可能的重复项:
#include <文件名>和 #include"文件名"有什么区别?

当我编写程序时,我包括像#include <iostream>这样的库,但也#include "iostream"是正确的,代码可以编译而没有任何错误或问题。

所以,我想知道< >" "有什么区别?

当你使用 < > 时,编译器在系统指定的目录(例如,你在include环境变量中设置的任何内容)中查找标头。

当您使用 " " 时,编译器首先在本地目录中查找,如果失败,则像使用 < > 一样重新搜索。从技术上讲,(即根据标准)不必是"本地"目录,但这就是它基本上在我知道的每个编译器中的工作方式)。

如果您关心的话,标准的官方措辞实际上有点模糊(§16.2/2-3):

表单的预处理指令

# include <h-char-sequence> new-line

在一系列实现定义的位置中搜索由指定唯一标识的标头 <和>分隔符之间的序列,并导致该指令被整个内容替换 的标头。如何指定位置或标识标头由实现定义。

表单的预处理指令

# include "q-char-sequence" new-line

导致该指令被指定标识的源文件的全部内容替换 " 分隔符之间的序列。在实现定义的文件中搜索命名源文件 方式。如果不支持此搜索,或者搜索失败,则重新处理指令,就像读取

# include <h-char-sequence> new-line

具有与原始指令相同的包含序列(包括>个字符,如果有)。

双引号 include 用于告诉编译器先在本地目录中查找包含的头文件,然后再在包含目录中搜索它。当您尝试包含代码的本地头文件时,可以看到这种差异。如果使用"<>"包含本地头文件,则编译器将失败,除非您的本地目录是"include"目录路径。

><>只在编译器提供的头文件中查找,而"首先在项目目录中查找,并且仅在编译器提供的头文件中查找,如果没有任何内容。

在源文件旁边添加一个名为 iostream 的文件。现在包含 " 并观察它失败(因为它将获得空文件)或使用 <> 并观察它成功(因为它将忽略本地文件)。

"XXX" - 它在你的一个目录中。 - 它在Microsoft的SDK或任何SDK中(您可以添加