结构化程序设计方法
自顶向下;逐步细化;模块化设计;结构化编码;
一、关于模块化编程的文件组织
所谓模块,实质上就是一个.c文件和一个.h文件的结合。
.c文件应该包含的内容:变量的定义与函数的实现;
同时,每个.c文件都配有一个.h文件,头文件的名称与相应的模块名相同,“.h”中是对于该模块接口的声明,它就是一份说明书,内容为:【extern变量声明】和【函数的声明】、【#define常数】、【结构体的定义】,其作用就是该模块对外部提供的接口函数或者接口变量,其内部不应该包含任何实质性的代码,我们可以将.h文件看成是.c文件的配置文件,而将.c文件理解为一个模块,也就是一个黑匣子。
一般而言,需要为整个工程建立一个所有的文件都要共同使用的头文件main.h,当转换平台时,这是要进行修改的。里面包含一些全局宏定义和系统头文件,比如typedef unsigned char uint8_t和#include <regs.h>。
二、.h文
#ifndef __FN_FILENAME_H #define __FN_FILENAME_H #include "xxx.h" /******************Macro Define Section******************/ #define MAX_TIMER_OUT (4) /******************Struct Define Section******************/ typedef struct studentTAG { u16 ID; char *name; }stu_st, *stu_pst; /******************Global variables declaration******************/ extern int i; /******************Prototype Declare Section******************/ extern u16 GetScanTimes(void); ……
三、.c文件
/****************************Copyright(c)********************************** ** XXX.Ltd ** ** http://www.cnblogs.com/BitArt/ ** **------File Info----------------------------------------------------- ** File Name: xxx.c ** Latest modified Date: xxx-xx-xx ** Latest Version: 1.0 ** Description: ** **-------------------------------------------------------------------------- ** Created By: xxx ** Created date: - - ** Version: 1.0 ** Descriptions: ** **-------------------------------------------------------------------------- ** Modified by: ** Modified date: ** Version: ** Description: ** ***************************************************************************/ /*============= I N C L U D E S =============*/ #include "xxx.h" /*============= D A T A =============*/ /* ** Variable Define Section ** (global variables) */ unsigned int MD_guiHoldBreathStatus; /* ** Variable Define Section ** (File Static variables) */ static unsigned int nuiNaviSysStatus; /*============= C O D E =============*/ /* ** Function Prototype section ** (static-scoped functions) */ static void AddSegmentHdrNode( ADI_CONT_SEGMENT_HDR *pSegmentListHdr, ADI_CONT_SEGMENT_HDR *pSegmentListTempHdr ); /* ** Function Definition section */ /******************END FILE******************/