欢迎来到天天文库
浏览记录
ID:31697420
大小:90.46 KB
页数:12页
时间:2019-01-17
《c程序中头文件相互包含精华》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、•h屮一般放的是同名.C文件屮定义的变量、数组、函数的声明,需要让.C外部使用的声明。1)h文件作用1方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明;2提供接口:对一个软件包来说可以提供一个给外界的接口(例如:stdio.h)o2)h文件里应该有什么常量,结构,类型定义,函数,变量申明。3)h文件不应该有什么变量定义,函数定义。4)extern问题对于变量需要extern;对于函数不需要因为函数的缺省状态是extern的.如果一个函数要改变为只在文件内可见,加statico5)include包含问题虽然申明和类型定义可以重复
2、,不过推荐使用条件编译。#ifndef_FILENAME_H,#defineFILENAMEH#endif6)应该在那儿包含h文件在需要的地方.比如某个提供接口的h文件仅仅被l.c文件需要,那么就在l.c文件里包含。编写的程序一般会有.H文件和相对应的.C文件,.H文件是声明所用,.C文件是其函数实现部分。在调用时只要包含.H文件即可,我们没有听说过include-delay.c"这类的程序,同时也不提倡使用这个形式。在delay.h文件中:〃对调用的函数声明#ifndefDELAYH#define_DELAY_H_externvoidDelaym
3、s(unsignedintn);#endif在delay.c文件屮:〃函数实现部分#include//forcrystal11.0592MvoidDelayms(unsignedintn)unsignedintij;for(j=n;j>0;j-)在主程序main.c屮#include〃在主程序包含・h文件,不能包含・c文件通常一个C程序工程按功能可以分成多个模块,一个模块通常由两个文档组成一个头文件*.h,对模块中的数据结构和函数原型进行描述;另一个为C文件貧C,对数据实例或对彖进行定义,以及函数算法的具体实现,
4、如I2C.C,SPI.C,DAC.C,DISPLAY.C等,为了文件的调用,我们要为每个模块定义一个头文件,以I2C.C来说,定义I2C.H。#ifndefGRAPHICS_H#defineGRAPHICS_H/*防止graphics.h被重复引用*/#include/*引用标准库的头文件可#include“myheade匚h”/*引用非标准库的头文件*/严全局函数声明*/classBoxvoidFunction!(•••);/*类结构声明*/};#endif*1^•丄■•丄■•土•丄■•丄■•土•丄■*S«•丄“*S«•丄■*!•
5、•丄“•丄“•卜•丄■■卜•丄■•丄■•卜•丄■■卜•丄■•丄■•卜•丄■%2^•丄■%2^•丄■%2^•丄■%2^•丄■•丄■%2>%1«•£>•丄■•丄■•丄■•丄■•丄■•丄■•土•丄■^7^^7^#T%^7^#T>^7^#T%^7^#T>^7w#T%#T%#T%#T%#T^^T%#T%吓・#T%吓・#T%吓・#T%吓・#T%吓・#T%吓・^7^吓・^7^*■^7^彳.#7^彳・*1>*1>*1>•匕
6、•匕*1**1>•匕■*■匕•匕■*■匕■*■匕•匕・立・b•匕•匕・立・b・b・b^X・・b*7*rJ**T**T**?•*T**?•*T**?•*T**?•*T**?•*T**?•*T**?•*T**?•*T**?•*T**T**T**T**T*哼・哼・哼・哼・哼・哼・哼・哼・哼・哼・^T*^T*^T*^T*^T*^T*^T*^T*^T*^T*5^%9^*Tw*Tw*Tw*Tw*TwrT*rT*rT*rT*rT*rT*rTwrT**TwrT*rTwrT*»T>rT*rTwrT*rT>eTwrTwrTwrTwrTwrTwrTw*TwrTwrTwr
7、TwrTwrTwrTwrTwrTwrTwrTwrTw模块化的程序是黑盒,只向外提供接口(全局变量、外部函数),而不需要让调用者了解其屮过程。尽可能地少定义接11有利于保持模块的独立性(不需要让使用者知道的内部函数与静态全局变量不需要在H文件中给出以避免使用者疑惑)在需要调用此模块的文件中写入include语句。一个好的工程,H文件的组织是很清晰的,只看H文件就能够写主程序调用相应的C模块。头文件的格式如下(I2C.H为例):***************************************************************
8、*****#ifndefI2C_H/*是否没有定义过”I2C_H”,防止重定义*/#defineI2C_H/*定义MI2C
此文档下载收益归作者所有