我想知道它们之间有什么区别:
#include "stdio.h"
并且
#include <stdio.h>
我想知道它们之间有什么区别:
#include "stdio.h"
并且
#include <stdio.h>
系统头文件请使用<whatever>
,而对于你自己的头文件,请使用"whatever"
。
区别在于当头文件名被引号包括时,编译器会在本地目录中查找该文件,但是使用<>
时则不会。如果想要技术上严谨的话,C标准并没有保证这一点,但实际上几乎所有的编译器都是这样工作的。
""
在当前文件路径中搜索。
<>
在全局包含路径中搜索。
编辑:您要求绝对路径和相对路径。
假设您有以下文件结构:
folderX
-fileX.a
-fileX.b
-folderX.Y
-fileX.Y.a
-fileX.Y.b
-folderX.Z
-fileX.Z.a
那么,假设folderX
是可用的最顶层目录,fileX.Z.a
的绝对路径将是folderX/folderX.Z/fileX.Z.a
。相对于例如fileX.a
,fileX.Z.a
的相对路径只是部分路径folderX.Z/fileX.Z.a
,也就是你从fileX.a
所在的目录开始路径。
#include <file>
此变体用于系统头文件。它在标准的系统目录列表中搜索名为file的文件。您可以使用“-I”选项在此列表前添加目录。
#include "file"
这个变体用于您自己程序的头文件。它首先在包含当前文件的目录中搜索名为file的文件,然后在用于 . 的相同目录中搜索。
#include
的参数,无论是用引号还是尖括号括起来的,都像字符串常量一样运作,不识别注释,也不展开宏名称。因此,#include 指定了一个名为“x/*y”的系统头文件的包含。
但是,如果文件名中有反斜杠,则将其视为普通文本字符而不是转义字符。不会处理C语言字符串常量适用的任何字符转义序列。
参考资料:
<>
和""
作为搜索词)。 - Paul R