关于C#: 和“stdio.h”之间的区别是什么?


What is the difference between <stdio.h> and “stdio.h”?

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

Possible Duplicate:
what is the difference between #include and #include “filename”

在这两种情况下都没有错误……它们之间有什么区别吗?


在标准C库位置中搜索,而"stdio.h"在当前目录中搜索。

理想情况下,您将使用<...>作为标准C库,使用"..."作为您编写并存在于当前目录中的库。


第二个版本被指定首先在实现定义的位置搜索,然后如果找不到文件,则在与<...>版本相同的位置搜索,该版本在通常由-I命令行选项和内置include路径指定的路径中搜索(指向标准库的位置和系统标题)。

通常,实现将该位置定义为相对于包含文件的位置。


当您想说:"在系统的include目录中查找具有此名称的文件"时,可以使用include。当您想说:"在我自己的应用程序的include目录中查找具有此名称的文件;但是,如果找不到该文件,请在系统的include目录中查找。"


<>告诉编译器在库头中查找文件,并"告诉它在应用程序头中四处查找"。

至于为什么它们都适用于您,也许您的编译器也会在库头中查找文件名,以防在您的库头中找不到文件名。


通常,标准头文件用<>括起来,其他特定于用户的文件用"指定"。


对于我使用的编译器,"…"开始在与正在编译的源文件相同的目录中查找include文件,然后查找include路径。在include路径中以<…>开头,跳过当前模具,除非它位于include路径中。


#include 用于系统头文件,而#include"something.h"用于您自己程序的头文件。在通常的系统目录(以及-I参数中包含的目录)中搜索系统头,在当前目录中搜索您的头,然后搜索与系统头相同的位置。

参见http://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html sec6


我的例子是"compiler first search the header file in your local directory,其中您的.c文件显示

而在<>编译器的情况下,只在头文件文件夹中搜索


不同的是,开发人员创建的头文件用"括起来。系统中已经存在的头文件用<>括起来。如果放置的目录不在编译器的搜索路径中,即使是<>头也需要-i指令。

底线:你的标题带有",系统标题带有<>


指的是头文件(不是头文件)"stdio.h"是指源文件。

头在实现中不必存在,它们的标识方式是实现定义的(通常头是特定目录上的文件)。

当指令使用"时,将按照实现定义的方式搜索源文件,如果找不到,则会重新处理该指令,就像它最初是用<>编写的一样。