Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该使用#include<;文件.h>;或;文件.h";?_C_Include - Fatal编程技术网

我应该使用#include<;文件.h>;或;文件.h";?

我应该使用#include<;文件.h>;或;文件.h";?,c,include,C,Include,在C中包含文件有两种方法: #include <headerpath/header.h> 第一个将使用编译器已知的目录查找文件,因此我们可以在不知道标准文件在哪里的情况下包含它们。 第二种方法将只使用引号之间的路径来查找文件。(如果搜索失败,编译器将尝试第一种方法) 我们可以向编译器知道的目录列表中添加一个或多个目录(第一种方法)。例如,对于gcc,我们有-I选项 因此,在最后,以下两个代码是等效的(path_to_header是一个目录): (一) (二) #包括 内部主(空)

在C中包含文件有两种方法:

#include <headerpath/header.h>
第一个将使用编译器已知的目录查找文件,因此我们可以在不知道标准文件在哪里的情况下包含它们。 第二种方法将只使用引号之间的路径来查找文件。(如果搜索失败,编译器将尝试第一种方法)

我们可以向编译器知道的目录列表中添加一个或多个目录(第一种方法)。例如,对于gcc,我们有
-I
选项

因此,在最后,以下两个代码是等效的(path_to_header是一个目录):

(一)

(二)

#包括
内部主(空)
{
返回(0);
}//使用:gcc main.c-I路径\u到\u头进行编译
因此,我的问题是: 例如,对于我自己的头文件,我应该使用1)还是2)?为什么?也许这只是个人的选择?有不同的情况需要知道吗

感谢阅读:)

编辑:
我不是在寻找这两种方法之间的区别(我想我已经理解了它们,因为我解释过了),我想知道是否有一些特殊情况需要了解,可能是为了小组工作或为同一个程序使用不同的编译器。。。也许我不知道如何表达我的想法(或者这是一个没有真正答案的愚蠢问题),我必须试着知道:)。

如果您自己的头文件位于定义的路径中,例如与使用头文件的文件位于同一文件夹中,则必须以这种方式使用“header.h”。 当头是一个系统头时,必须使用,而该系统头不在包含它的源中。

根据标准,它们之间唯一的标准区别是
\include
包含头,而
\include“…”
包含源文件(如果找不到源文件,则返回到
行为)。所有其他差异均由实现定义

这种区别很重要,因为例如,像
stdlib.h
这样的标准头可能实际上不是文件,而是由编译器在编译时注入的


对于您自己的代码,因为您不会有这样的头魔法,并且应该确切地知道您希望从自己的工作中包括哪些源文件,以及您希望编译器处理哪些源文件(系统库等)对于不属于项目文件结构的include,您应该只使用

对于标准库(可能已预编译)的标题,请使用:

使用命令行上的选项-I可获得其他库。

在包含系统头时使用,在包含与当前源文件路径相关的头时使用“”。
\include“path_to_header/header.h”
可能重复,因此我们可以包含标准文件,而不知道它们在哪里。”。有时有点神秘是好的。使用#3
#包括“header.h”
#include "headerpath/header.h"
#include "path_to_header/header.h"

int     main(void)
{
    return (0);
} // Compiling with : gcc main.c
#include <header.h>

int     main(void)
{
    return (0);
} // Compiling with : gcc main.c -I path_to_header
#include <stdio.h>
#include "project/header.h"