可能重复:
What is the difference between #include <filename> and #include “filename”?
编写以下内容时,为什么编译器没有抱怨:
#include "stdio.h"
不应该
#include <stdio.h>
相反,因为stdio.h实际上存储在库文件夹中而不是存储在翻译单元的文件夹中?为什么它仍然有效?
答案 0 :(得分:9)
""
和<>
之间的差异并不大。两者都在实现定义的位置 1,2 中搜索头。不同之处在于,如果""
的搜索失败,则搜索就像使用<>
一样。 (§16.2)
基本上,这意味着如果<>
找到具有特定名称的标头,则""
无法找到具有相同名称 3 的标头。
1 这两个表单的实现定义位置不必相同。
2 不要求其中一个搜索库文件夹和另一个搜索TU的文件夹。允许编译器搜索整个文件系统,如果需要,甚至谷歌搜索它。
3 但这并不意味着他们总能找到相同的标题。
答案 1 :(得分:1)
这是因为定义了包含语法。
#include <cstdio>
表示编译器应包含标准库cstdio
#include "cstdio"
表示编译器应该尝试查找文件&#34; cstdio&#34;,主要查看当前目录并使用标准库的位置作为后备。
答案 2 :(得分:1)
""
与<>
只会更改查找顺序。
所以
#include "stdio.h"
预编译器将从翻译单元的目录开始查找,然后转到预定义的&#34; include&#34;目录
尽管
#include <stdio.h>
是其他方式