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

可能重复:
#include <filename>和#include“filename”有什么区别?

在C ++中包含头文件时,尖括号< >和双引号" "什么区别?

我的意思是应该包含哪些文件,例如: #include <QPushButton>以及哪些文件将被包括在内,例如: #include "MyFile.h" ???

这是编译器依赖。 也就是说,通常使用"当前工作目录中的标题优先于系统标题”。 <>通常用于系统标题。从规范(第6.10.2节)开始:

表单的预处理指令

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

search一系列实现定义的位置,以寻找由<>分隔符之间的指定序列唯一标识的头部,并使头部的全部内容replace该指令。 如何指定位置或标识的是实现定义的。

表单的预处理指令

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

将导致用指定序列标识的源文件的全部内容替代该指令,该指定序列在"分隔符"之间,以实现定义的方式search指定的源文件,如果不支持该search,或者search失败,该指令被重新处理,就像它读取

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

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

所以在大多数编译器上,使用""首先检查你的本地目录,如果没有find匹配,那么继续检查系统path。 使用<>开始search系统标题。

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

因此,按照惯例,对于标准包含使用尖括号,对于其他所有使用双引号。 这可以确保在(不推荐的)情况下,您有一个与标准标题名称相同的本地标题,在每种情况下都会select正确的标题。