头文件由三部分组成:
1:头文件开头出的版本和版权的 声明。
2:预处理块。
3:函数和类的结构声明等。
规则:
(1): 为了防止头文件被重复的引用,应该使用#ifndef/define/endif结构产生与处理模块。
(2):用#include<filename.h>来引用标准库的头文件(编译器将从标准库目录开始搜索)。
(3):用#include"filename.h"来引用非标准库的头文件(编译器将从用户工作的目录开始搜索)
建议:头文件中一般只存放“声明”,而不存放“定义”
定义文件的结构:
定义文件的 内容有由三部分组成:
(1): 定义文件开头处的版本和版权;
(2):对一些头文件的引用;
(3):程序的实现体(包括数据和代码)
头文件的作用:
(1):通过头文件来调用库功能。在很多场合源代码不能(或者不准)提供给用户。只提供给用头文件或者二进制的库。用户只需要按照头文件中的接口的声明来调用库功能。而不必关心接口是如何实现的。编译器会从库中提取相应的代码。
(2): 头文件可以用来加强类型安全检查。如果某个接口被实现或者被实用的时候,其方式和在头文件中的声明不一致的时候,编译器就会报错。这一简单的规则可以大大的减轻程序员调试和改错的负担。
目录结构:
如果一个软件的头文件比较多(超过10个),就应该把头文件和定义文件分开。分别保存在不同的目录之中。以便于维护。
例如:可以将头文件保存在inluude目录之中。将定义文件保存在source文件之中。
如果某些头文件是私有的,不会被程序直接引用,为了加强信息隐藏。那么可以把这些头文件和定义文件放在同一目录之中。