C语言中的头文件可以自己写吗?

一些初学C语言的人,不知道头文件(*.h文件)原来还可以自己写的。只知道调用系统库函数时,要使用#i nclude语句将某些头文件包含进去。其实,头文件跟.C文件一样,是可以自己写的。头文件是一种文本文件,使用文本编辑器将代码编写好之后,以扩展名.h保存就行了。头文件中一般放一些重复使用的代码,例如函数声明,变量声明,常数定义,宏的定义等等。当使用#i nclude语句将头文件引用时,相当于将头文件中所有内容,复制到#i nclude处。为了避免因为重复引用而导致的编译错误,头文件常具有 #ifndef   LABEL
#define   LABEL
 //代码部分
#endif
的格式。其中,LABEL为一个唯一的标号,命名规则跟变量的命名规则一样。常根据它所在的头文件名来命名,例如,如果头文件的文件名叫做hardware.h,
那么可以这样使用:
#ifndef   __HARDWARE_H__
#define   __HARDWARE_H__
  //代码部分
#endif
这样写的意思就是,如果没有定义__HARDWARE_H__,则定义__HARDWARE_H__,并编译下面的代码部分,直到遇到#endif。这样,当重复引用时,由于__HARDWARE_H__
已经被定义,则下面的代码部分就不会被编译了,这样就避免了重复定义。
另外一个地方就是使用include时,使用引号与尖括号的意思是不一样的。使用引号(“”)时,首先搜索工程文件所在目录,然后再搜索编译器头文件所在目录。而使用尖括号(<>)时,刚好是相反的搜索顺序。假设我们有两个文件名一样的头文件hardware.h,但内容却是不一样的。一个保存在编译器指定的头文件目录下,我们把它叫做文件I;另一个则保存在当前工程的目录下,我们把它叫做文件II。如果我们使用的是#i nclude ,则我们引用到的是文件I。如果我们使用的是#i nclude “hardware.h”,则我们引用的将是文件II。笔者以前就遇到过一个同事问,为什么他修改了那个头文件里面的内容,好象跟没有修改一样?就是因为他有两个一样的头文件(就像我们刚描述的那样),他是使用#i nclude引用的,而他修改时,却是当前工程所在的目录下的那个文件。

 

我们在编写C语言或C++语言时,预处理文件都被表示为#include、#include或#include等等。在这里的“h”表示的是头文件。那么是什么的头文件?头文件又是什么呢?如若不加上“h”的话,我运行了程序,似乎还是可以运行成功,但加不加“h”到底又有什么关系? 请详细回答,谢谢。 #include 语句起的是文件包含作用。功能是把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。要求这个语句必须在源程序的最前面。

所谓“头文件”,指的是在源文件头部引入的文件,顾名思义,即是头文件。至于头文件本身,则没有什么固定格式和固定扩展名。你可以将自己写的C文件作为头文件包含进来。

至于扩展名h,则表示是系统提供的头文件类型。如果是TC,一般头文件的路径是:TC/INCLUDE 。 头文件都是纯文本格式,内容多数是函数定义或函数体等。

在调用系统函数时,有些是必须要包含进来相应的头文件才可以使用的,如isalpha函数,判断是否为字母,必须要包含ctype.h头文件。有些则不必,那是因为系统已经默认包含进来了,例如包含Printf函数的头文件stdio.h,是系统默认包含的,虽然显示的包含也没有任何问题。

另外,对于系统提供的头文件,如ctype.h 如果不写扩展名的话,系统会找不到这个头文件,而无法实现包含的功能。所以正确的系统.h文件,是一定要写上扩展名的。

 

你可能感兴趣的:(C语言中的头文件可以自己写吗?)