BitArt

Ideas Worth Spreading

导航

C语言的结构化编程

Posted on 2012-11-25 14:41  BitArt  阅读(2963)  评论(0编辑  收藏  举报

结构化程序设计方法

  自顶向下;逐步细化;模块化设计;结构化编码;

一、关于模块化编程的文件组织

  所谓模块,实质上就是一个.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******************/