可能重复:#include <filename>和#include“filename”有什么区别?
在包括C中的头文件时,尖括号 < > 和双引号 " " 之间有什么区别?
< >
" "
我的意思是应该使用例如: #include <QPushButton> 包含哪些文件以及使用例如包含哪些文件: #include "MyFile.h" ???
#include <QPushButton>
#include "MyFile.h"
它依赖于编译器 . 也就是说,通常使用 " 优先于当前工作目录中的标头超过系统标头 . <> 通常用于系统头 . 从规范(第6.10.2节):
"
<>
#include <h-char-sequence> new-line形式的预处理指令搜索一系列实现定义的位置,以查找由<和>分隔符之间的指定序列唯一标识的标头,并使标头的整个内容替换该指令 . 如何指定位置或标识的标头是实现定义的 . 形式#的预处理指令包括“q-char-sequence”换行符导致由“delimiters”之间指定序列标识的源文件的全部内容替换该指令 . 以实现定义的方式搜索指定的源文件 . 如果不支持此搜索,或者搜索失败,该指令被重新处理,就像它读取#include <h-char-sequence> new-line一样使用原始指令中相同的包含序列(包括>字符,如果有的话) .
因此,对于大多数编译器,使用 "" 首先检查本地目录,如果找不到匹配,则继续检查系统路径 . 使用 <> 开始使用系统标头进行搜索 .
""
使用尖括号时,编译器将在包含路径列表中搜索该文件 . 当您使用双引号时,它首先搜索当前目录(即正在编译的模块的目录),然后它将搜索包含路径列表 .
因此,按照惯例,您使用标准包含的尖括号和其他所有内容的双引号 . 这确保了在(不推荐的)情况下,您具有与标准 Headers 同名的本地 Headers ,将在每种情况下选择正确的 Headers .
2 回答
它依赖于编译器 . 也就是说,通常使用
"
优先于当前工作目录中的标头超过系统标头 .<>
通常用于系统头 . 从规范(第6.10.2节):因此,对于大多数编译器,使用
""
首先检查本地目录,如果找不到匹配,则继续检查系统路径 . 使用<>
开始使用系统标头进行搜索 .使用尖括号时,编译器将在包含路径列表中搜索该文件 . 当您使用双引号时,它首先搜索当前目录(即正在编译的模块的目录),然后它将搜索包含路径列表 .
因此,按照惯例,您使用标准包含的尖括号和其他所有内容的双引号 . 这确保了在(不推荐的)情况下,您具有与标准 Headers 同名的本地 Headers ,将在每种情况下选择正确的 Headers .