首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><iostream>和"iostream“(引号)在#include中的区别?

<iostream>和"iostream“(引号)在#include中的区别?
EN

Stack Overflow用户
提问于 2012-04-24 19:32:25
回答 4查看 1.9K关注 0票数 0

可能重复:

What is the difference between #include and #include “filename”?

当我编写程序时,我包括了像#include <iostream>这样的库。但是,#include "iostream"也是正确的,代码编译后不会出现任何错误或问题。

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-24 19:35:10

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

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

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

表单的预处理指令

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

在实现定义的位置序列中搜索由<和>分隔符之间的指定序列唯一标识的标题,并将该指令替换为标题的全部内容。如何指定位置或标头是实现定义的。

表单的预处理指令

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

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

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

使用原始指令中相同的包含序列(如果包括>字符)。。

票数 1
EN

Stack Overflow用户

发布于 2012-04-24 19:34:30

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

票数 1
EN

Stack Overflow用户

发布于 2012-04-24 19:34:21

<>只在编译器提供的头文件中查找,而"“首先在项目目录中查找,如果没有,则只查看编译器提供的头文件。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10304751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档