头文件之谜

时间:2010-08-22 02:37:05

标签: c++ objective-c c

  

可能重复:
  what is the difference between #include <filename> and #include “filename”

为什么我们对内置类(<...>)的自定义构建类和大括号使用引号(“...”)?

3 个答案:

答案 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)。引号(")通常用于源树中的头文件。但就像其他人提到的那样,这不是一个要求。