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