可能重复:
what is the difference between #include <filename> and #include “filename”
我想知道
之间有什么区别#include "stdio.h"
和
#include <stdio.h>
答案 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
的绝对路径将为folderX
。 fileX.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中字符串常量的字符转义序列。