可能重复:
what is the difference between #include <filename> and #include “filename”
为什么我们对内置类(<...>
)的自定义构建类和大括号使用引号(“...”)?
答案 0 :(得分:5)
这表示标题不是系统范围的。
这是一项惯例,而非要求。
顺便说一句,那些不是引号,它们是引号。排版领域有所不同。
答案 1 :(得分:2)
至少对于C来说,现在没有任何区别。 ISO标准规定文件的位置在两种情况下都是实现定义的。
通常的方法是将<>
用于系统标题(例如/usr/include
下的内容)和""
用于您自己的标题,但这不是必需的。
C99的相关位来自6.10.2,“源文件包含”,引用如下。
表单
的预处理指令# include <h-char-sequence> new-line
在一系列实现定义的位置搜索唯一标识的标头
<
和>
分隔符之间的指定序列,并导致替换它
指令由标题的全部内容组成。如何指定地点或标题
确定是实施定义的。
表单
的预处理指令# include "q-char-sequence" new-line
导致由指定的源文件的全部内容替换该指令
按"
分隔符之间的指定顺序排列。搜索指定的源文件
以实现定义的方式。如果不支持此搜索,或者搜索
失败后,指令被重新处理,就像它读取
# include <h-char-sequence> new-line
使用相同的包含序列(包括>
个字符,如果有的话)来自原始序列
指令。
答案 2 :(得分:1)
是的,从我所听到的情况来看,尖括号(<
')用于表示标头是随编译器提供的,或者是编译器已经告知了标题所在的目录找到文件(-I
)。引号("
)通常用于源树中的头文件。但就像其他人提到的那样,这不是一个要求。