关于c ++:为什么#include “stdio.h” 有效?

Why does #include “stdio.h” work?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What is the difference between #include and #include"filename"?

当我写下面的代码时,编译器为什么不抱怨呢?

1
#include"stdio.h"

不应该是

1
#include <stdio.h>

相反,因为stdio.h实际上存储在库文件夹中,而不是翻译单元的文件夹中?为什么它还能工作?


""<>的差别不大。两者都在实现定义的位置1、2中搜索头。不同之处在于,如果对""的搜索失败,则搜索的执行方式就像使用<>一样。(16.2)

基本上,这意味着如果<>找到具有特定名称的头,""不会找不到具有相同名称3的头。

1对于这两个表单,这些实现定义的位置不必相同。

2不要求其中一个搜索库文件夹和另一个搜索tu的文件夹。如果需要,编译器可以搜索整个文件系统,甚至谷歌也可以搜索它。

3但这并不意味着他们总是找到相同的标题。


""<>只改变查找顺序。

所以用

1
#include"stdio.h"

预编译程序将从翻译单元的目录开始查找,然后移动到预定义的"include"目录。

反之

1
#include <stdio.h>

还有别的路吗


这是因为如何定义include语法。

#include 意味着编译器应该包含标准库cstdio。

#include"cstdio"意味着编译器应该尝试查找文件"cstdio",主要在当前目录中查找,并使用标准库的位置作为回退。