在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正确的标题。