一、头文件作用
C语言里,每个源文件是一个模块,头文件为使用该模块的用户提供接口。接口指一个功能模块暴露给其他模块用以访问具体功能的方法。
使用源文件实现模块的功能,使用头文件暴露单元的接口。用户只需包含相应的头文件就可使用该头文件中暴露的接口。
通过头文件包含的方法将程序中的各功能模块联系起来有利于模块化程序设计:
1)通过头文件调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制库即可。用户只需按照头文件中的接口声明来调用库功能,而不必关心接口如何实现。编译器会从库中提取相应的代码。
2)头文件能加强类型安全检查。若某个接口的实现或使用方式与头文件中的声明不一致,编译器就会指出错误。这一简单的规则能大大减轻程序员调试、改错的负担。
在预处理阶段,编译器将源文件包含的头文件内容复制到包含语句(#include)处。在源文件编译时,连同被包含进来的头文件内容一起编译,生成目标文件(.obj)。
如果所包含的头文件非常庞大,则会严重降低编译速度(使用GCC的-E选项可获得并查看最终预处理完的文件)。因此,在源文件中应仅包含必需的头文件,且尽量不要在头文件中包含其它头文件。
二、用法
C/C++ 程序在源文件前面写 #include <windows.h>即可。
作用
头文件封装了库函数以及一些类,将一些复杂的工作由库函数处理,而用户不必把精力放在这些地方。比如说cout<<,为标准输出流,其实说到底还是函数调用,不过这个函数有些特殊,用的是运算符重载,确切地说是重载了“<<”运算符,作用是将键盘输入的在屏幕上打印出来,这个功能要是由我们去写,估计也得学个两三年才有可能。所以就简化了操作。
而这一系列的函数都在头文件中包含(是一个函数库)。在调用时包含后便可直接用。
分类: 电脑/网络 >>程序设计 >>其他编程语言问题描述:
各位高手,我用c编了个程序,想使用自己编的头文件即#include "******.h"这样,请问头文件中除了包括函数体外,还应该包括什么?如果我其中一个头文件中的函数又要用到其他头文件中的函数,应该怎样做?谢谢!
解析:
从原理上来说,
#include 语句起的只是一个插入作用。
也就是说,#include 的文件里的内容可以随便写。
编译器使用#include 的文件里的内容来插入到#include 所在位置。
所以,你说的“头文件”没有固定格式。
不过,也不是完全没有,一般来说,头文件里多数是放的函数定义或函数体。
此外,还有:
#ifndef ****
#define ****
……
#endif
之类的语句,用于控制#define 与 #endif之间的内容不被重复定义或插入。
如要使用其它头文件中的函数,可以直接在你的头文件中引用。
初学C语言,个人建议你使用C++Builder 6去练习和理解,当然,这要求你有一定的英语水平(高中毕不合格的E文水平就可以了)。我们简称它为BCB,BCB在很多情况下会自动的帮你加好头文件,你可以观察它自动生成的文件,代码,以进一步学习。
头文件在计算机C语言家族程序中被大量使用,主要作用在于多个代码文件全局变量的重用、防止定义的冲突,对各个被调用函数给出一个描述,其本身不需要包含程序的逻辑实现代码,它只起描述性作用,用户程序只需要按照头文件中的接口声明来调用相关函数或变量,链接器会从库中寻找相应的实际定义代码。
一些初学C语言的人,不知道头文件(*.h文件)原来还可以自己写的。只知道调用系统库函数时,要使用#include语句将某些头文件包含进去。其实,头文件跟.C文件一样,是可以自己写的。头文件是一种文本文件,使用文本编辑器将代码编写好之后,以扩展名.h保存就行了。头文件中一般放一些重复使用的代码,例如函数声明,变量声明,常数定义,宏的定义等等。当使用#include语句将头文件引用时,相当于将头文件中所有内容,复制到#include处。使用头文件不仅可以减少工作量,还可以减少因代码编写不细心而导致的错误。
工具/原料
Visual C++ 6.0
方法/步骤
打开Visual C++ 6.0,文件-新建-文件选项卡-C/C++ Header File
编写代码如下:
max(int x,int y)
{
if(x>y)
printf("%d",x)
else
printf("%d",y)
}
按Ctrl+S或者点击保存,然后可以看到目录下有一个H1.H,这就是我们的头文件了,把它放到“Visual C++ 6.0安装目录\VC98\ATL\Include”文件夹下就可以使用了。
使用方法就像使用自带的头文件一样。
一个简单的比较两数大小的头文件就完成了,很简单吧。