在C语言的头文件中中括号和双引号的在用的时候的区别为:编译不游烂同、对象不同、环境不同。
一、编译不同
1、头文件中中括号:头文件中中括号编译时会先在系统include目录里搜索,如果找不到才会枯饥在源代码所在目录搜索。
2、头文件中双引号:头文件中双引号编译时会先在源代码所在目录搜索,如果找不到才会在系统include目录里搜索。
二、对象不同
1、头文件中中括号:头文件中中括号的对象是C库文件或者 *** 作系神败漏统头文件。
2、头文件中双引号:头文件中双引号的对象是自定义的头文件。
三、环境不同
1、头文件中中括号:头文件中中括号不需要设置自定义环境,默认系统环境。
2、头文件中双引号:头文件中双引号需要设置自定义环境。
双引号表示先在程序源文件所在目录查找,如果未找到则去系统默认目录查找,通常用于包含程序作者编写的头文件尖括号表示只在系统默认目录或者括号内的路径查找,通常用于包含系统中自带的头文件尖括号:
在包含文件目录中去查找(包含目录是由用户在设置环境时设置的),而不在源文件目录去查找;
双引号:
首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。
详解:
预处理器发现 #include 指令后,就会寻找后跟的文件名并歼者把这个文件的内容包含到当前文件中。被包含文件中的文本将替换源代码文件中的#include指令,就像你把被包含文件中的全部内容键入到源文件中的这个位置一样。
#include 指令有两种使用形式
#include <stdio.h>文件名放在尖括号中
#include “mystuff.h” 文件名放在双引号中
尖括号<和>括起来表明这个文件是一个工程或标准头文件。查找过程会检查预定义的目录,我们可以通过设置搜索路径环境变量或命令行选项来修改这些目录。
如果文件名用一对引号括起来则表明该文件是用户提供的头文件,查找该
文件时将从当前文件目录(或文件名指定的其他目录)中寻找文件,然后再在标准位置寻找文件。
为什么要包含文件呢?
因为这些文件包含了编译器所需的信息。例如,stdio.h文件通常包含EOF,NULL,
getchar()和putchar()的定义。
包含大型头文件并不一定显著增加程序的大小。很多情况下,头文件中的内容是编译器产生最终代码所需的信息,而不是加到最终代码里的具体语句。
被包含的文件还可以含有#include 指示符,由于嵌套包含文件的原因,一个头文件可能会被多次包含在一个源文件中,条件指示符可防止这种头文件的重复处理。
例如:
#ifndef BOOKSTORE_H
#define BOOKSTORE_H
#endif
条件指示符#ifndef 检查BOOKSTORE_H 在前面是否已经被定义,这里BOOKSTORE_H是一个预编译器常量习惯上预编译器常量往往被写成物姿大写字母,如BOOKSTORE_H在前面没有被定义,则条件指示符的值为真于是从#ifndef 到#endif 之间的所有语句都被包含进来进行处理。相反,如果#ifndef 指示符的值为假则它与#endif 指示符之间的行将被忽略,为了保证头文件只被处理一次,把如下#define 指示符
#define BOOKSTORE_H
放在#ifndef 后面,这样在头文件的内容第一次被处理时,BOOKSTORE_H 将罩改绝被定义
从而防止了在程序文本文件中以后#ifndef指示符的值为真。
只要不存在两个必须包含的头文件要检查一个同名的预处理器常量这样的情形,这个策略就能够很好地运作。#ifdef 指示符常被用来判断一个预处理器常量是否已被定义以便有条件地包含程序代码。
首先我们要清楚一件事,通常情况下我们都是用的尖括号,你可以理解为尖括号是比较官方性的,而双引号一般是我们用户自定义的时候用的多一点的。为什么这么说呢?那就需要我们进一步地了解这两者搜索头文件时候的区别了。2
/5
先说比较官方性的尖括号,尖括号通常都是用来引用包含标准的库,也就是头文件,根据我们选择的编译器的不同,软件会根据系统配置的库环境变量和各自用户自己配置的路径去搜索。但是在使用尖括号的时候,我们的软件不会在项目或者说是源代码文件的当前路径去寻找头文件。
3
/5
而我们的双引号则是:先从我们自己编写好的头文件的文件夹路径中进行头文件的搜索,这个时候如果我们的软件没有搜索到,它才会再搜索系统自带的标准头文件的文件夹。
4
/5
那么这两者分别用于什么时候比较好呢?小编建议大家,当你不确定一个要调用的头文件是不是系统自带的头文件时,我们最好用双引号,因为根据上面说的双引号的用法,它会自动去先去你的项目文件夹找头文件,再去查找系统的头文件夹。
5
/5
最后小编还是要提醒各位小伙伴郑隐,学编程语言需要我们喊肆厅多去动手实际,只有实际 *** 作去理解以后,我们才会雹森真正明白头文件用双引号与尖括号的真正区别
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)