可能重复:
what is the difference between #include <filename> and #include “filename”
在这两种情况下都没有错误......它们之间有什么区别吗?
答案 0 :(得分:9)
<stdio.h>
在标准C库位置搜索,而"stdio.h"
也在当前目录中搜索。
理想情况下,您可以将<...>
用于标准C库,将"..."
用于您编写并存在于当前目录中的库。
答案 1 :(得分:6)
指定第二个版本首先在实现定义的位置进行搜索,然后如果找不到该文件,则在与<...>
版本相同的位置搜索,该版本搜索通常由{指定的路径{1}}命令行选项和内置包含路径(指向标准库和系统头的位置)。
通常,实现将该位置定义为相对于包含文件的位置。
答案 2 :(得分:2)
&lt;&gt;告诉编译器在库的头文件中查找文件,并“”告诉它在应用程序的头文件中查看。
至于为什么它们都适合你,也许你的编译器也会在库头文件中查找文件名,以防它在你的库中找不到。
答案 3 :(得分:2)
如果您想说:“在系统的include目录中查找具有此名称的文件”,请使用#include。当你想说:“在我自己的应用程序的include目录中查找具有此名称的文件时,使用#include”doublequoted“;但是,如果找不到它,请查看系统的include目录。”
答案 4 :(得分:1)
我的情况“”编译器首先在你的本地目录中搜索头文件 您的.c文件显示
而在&lt;&gt;的情况下编译器只在头文件夹中搜索
答案 5 :(得分:1)
#include <something.h>
适用于系统标头,而#include "something.h"
适用于您自己程序的标头。在通常的系统目录(以及-I
参数中包含的目录)中搜索系统头,在当前目录中搜索头,然后在系统头中搜索相同的位置。
答案 6 :(得分:1)
对于我使用的编译器,“...”开始在与正在编译的源文件相同的目录中查找包含文件,然后是包含路径。包含&lt; ...&gt;从include路径开始,跳过当前的die,除非它在include路径中。
答案 7 :(得分:1)
通常标准头文件包含在&lt; &GT;和其他用户特定文件用“。
指定答案 8 :(得分:0)
<stdio.h>
指的是标题(不是标题文件)
"stdio.h"
指的是源文件。
标题不一定存在于实现中;它们的识别方式是实现定义的(通常标题是特定目录中的文件)
当指令使用"
时,将以实现定义的方式搜索源文件,如果找不到,则对指令进行重新处理,就好像它是用<
和{{1}编写的一样。首先。
答案 9 :(得分:0)
不同之处在于开发人员生成的头文件用“”括起来。已包含在系统中的头文件包含在&lt;&gt;中。甚至&lt;&gt;如果放置的目录不在编译器的搜索路径中,则headers需要-I指令。
底线:标题为“”,系统标题为&lt;&gt;