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