为了账号安全,请及时绑定邮箱和手机立即绑定

在C ++中包含头文件时,尖括号<>和双引号“”之间的区别?

在C ++中包含头文件时,尖括号<>和双引号“”之间的区别?

C++
杨__羊羊 2019-11-05 15:48:33
在C ++中包含头文件时,尖括号< >和双引号有什么区别" "?我的意思是应该使用例如:包括#include <QPushButton>哪些文件,以及使用例如:#include "MyFile.h"?
查看完整描述

3 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

它取决于编译器。也就是说,通常,使用"当前工作目录中的标头优先于系统标头。 <>通常用于系统头文件。从到规范(第6.10.2节):


形式的预处理指令


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

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


形式的预处理指令


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

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


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

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


因此,在大多数编译器上,使用第""一个检查您的本地目录,如果找不到匹配项,则继续检查系统路径。使用<>开始使用系统标题进行搜索。


查看完整回答
反对 回复 2019-11-05
?
largeQ

TA贡献2039条经验 获得超7个赞

使用尖括号时,编译器会在包含路径列表中搜索文件。当使用双引号时,它首先搜索当前目录(即正在编译的模块所在的目录),然后才搜索包含路径列表。

因此,按照惯例,将尖括号用于标准包含,双引号用于其他所有内容。这样可以确保在(不建议)情况下,如果您具有与标准标头同名的本地标头,则在每种情况下都将选择正确的标头。


查看完整回答
反对 回复 2019-11-05
?
翻阅古今

TA贡献1780条经验 获得超5个赞

我不明白an implementation-defined manner=是怎么回事your local directory。是manner==,places并且place某种程度上是静态的,而不是动态的工作目录?因此,有一个manner用于搜索您的工作目录的目录吗?

查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 549 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信