“”和“<>之间有什么区别?头文件包含在程序中的时候?

时间:2011-03-04 07:39:13

标签: c

  

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

我想知道

之间有什么区别
#include "stdio.h"

#include <stdio.h>

3 个答案:

答案 0 :(得分:12)

对系统标题使用<whatever>,为自己的标题使用"whatever"

不同之处在于,当它包含在引号中时,编译器将查找本地目录,但使用<>时,它不会。如果你想获得技术,C标准不能保证,但它实际上是所有编译器的工作方式。

答案 1 :(得分:5)

""在当前文件的路径中搜索。 <>在全局包含路径中进行搜索。

编辑:您要求绝对路径和相对路径。

假设您有如下文件结构:

folderX
 -fileX.a
 -fileX.b
 -folderX.Y
  -fileX.Y.a
  -fileX.Y.b
 -folderX.Z
  -fileX.Z.a

然后,假设fileX.Z.a是可用的最顶层目录,folderX/folderX.Z/fileX.Z.a的绝对路径将为folderXfileX.Z.a相对于例如fileX.a的相对路径folderX.Z/fileX.Z.a只是fileX.a部分,即您在{{1}}所在的目录中开始路径。

答案 2 :(得分:4)

#include <file>

此变体用于系统头文件。它在标准的系统目录列表中搜索名为file的文件。您可以使用`-I'选项将目录添加到此列表中。

#include "file"

此变体用于您自己程序的头文件。它首先在包含当前文件的目录中搜索名为file的文件,然后在用于。

的相同目录中搜索

#include的参数,无论是用引号还是尖括号分隔,都表现为字符串常量,因为无法识别注释,并且不会扩展宏名称。因此,#include指定包含名为`x / * y'的系统头文件。

但是,如果文件名中出现反斜杠,则它们被视为普通文本字符,而不是转义字符。没有处理适合C中字符串常量的字符转义序列。

Reference