• 多个".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  

  • 相关阅读:
    Java WebSocket生命周期
    软件网络总结
    js模态弹窗
    spring boot
    spring aop
    lvs分布式
    如何在大牛面前装逼
    Java学习的思考
    javase知识点
    <nginx+PHP>nginx环境下配置支持php7
  • 原文地址:https://www.cnblogs.com/zjvskn/p/4259994.html
Copyright © 2020-2023  润新知