为什么#include“stdio.h”有效?

时间:2012-12-03 13:37:31

标签: c++ include

  

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

编写以下内容时,为什么编译器没有抱怨:

#include "stdio.h"

不应该

#include <stdio.h>

相反,因为stdio.h实际上存储在库文件夹中而不是存储在翻译单元的文件夹中?为什么它仍然有效?

3 个答案:

答案 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>

是其他方式