多个".h"文件中声明及定义 全局变量和函数

一、".h"文件必须以如下格式书写

例:文件《CZ_efg_hi.h"》

------------文件内容-----------

#ifndef CZ_Efg_Hi_H

#define CZ_Efg_Hi_H

.....

所有文件内容

.....

#endif

---------------------------------

 

二、全局变量 在".h"文件中声明,在".c"文件中定义及初始化

例:某2个全局变量

小型程序中 : 

   unsigned char CommandStackAppendPoint=0;

   bit CommandStackOverflow=0;

在大型程序中

   ".h"文件 只声明

      extern unsigned char CommandStackAppendPoint;

      extern bit CommandStackOverflow;

   ".c"文件 定义及初始化

      unsigned char CommandStackAppendPoint=0;

      bit CommandStackOverflow=0;

 

三、特别要注意数组类型的声明及定义

[]里空的表示“声明”,[]里定义了长度则表示“定义”

普通数组

   小型程序中

      unsigned char SerialRxDataBuffer[4]; 

   大型程序中

      ".h"文件 声明([]中空的)

         extern unsigned char SerialRxDataBuffer[]; 

      ".c"文件 定义([]中定义了长度)

         unsigned char SerialRxDataBuffer[4]={0,1,2,3};

结构数组

   小型程序

      extern struct Command
      {
       unsigned char DeviceCode;

       unsigned char ControlParameter; 

       unsigned char DataH;

       unsigned char DataL;一个15位的数值
      } CommandStack[4]; 

   大型程序

      ".h"文件

         extern struct Command
         {
          unsigned char DeviceCode;

          unsigned char ControlParameter; 

          unsigned char DataH;

          unsigned char DataL;一个15位的数值
         } ;

         extern struct Command CommandStack[]; 

      ".c"文件

         struct Command CommandStack[4];

 

四、函数声明

只要在".h"文件内将所有生命的函数前加上extern即可

   小型程序

      void InitCommandStack() ; //初始化命令堆栈 ,  将所有值置0  

   大型程序

      extern void InitCommandStack() ; //初始化命令堆栈 ,  将所有值置0  



转自:http://blog.sina.com.cn/s/blog_537d61430101cwv1.html

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页