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

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,这里给出一个示例的.h文件,代码如下: ```c++ #ifndef EXAMPLE_H #define EXAMPLE_H #include <stdio.h> struct Point { int x; int y; }; void print_hello(); int add(int a, int b); extern int global_var; #endif ``` 该头文件主要定义了三个函数和一个结构体,以及一个全局变量。其,`print_hello()`函数用于输出一句问候语,`add(a, b)`函数用于计算两个整数的和,`global_var`是一个整型变量。 下面我们逐一解释一下每一部分的含义: 1. `#ifndef`和`#define`指令:这两个指令是为了防止重复包含头文件。`#ifndef`表示如果`EXAMPLE_H`标识符未被定义,那么就执行`#define`指令,定义`EXAMPLE_H`标识符,从而避免重复定义。 2. `#include`指令:该指令用于引入其他头文件,这里引入了`stdio.h`文件,用于输出信息。 3. `struct Point`结构体:该结构体定义了一个点,包括两个成员变量`x`和`y`。 4. `void print_hello()`函数:该函数没有参数和返回值,用于输出一句问候语。 5. `int add(int a, int b)`函数:该函数有两个参数`a`和`b`,返回值为两数之和。 6. `extern int global_var`全局变量:该变量并未在头文件进行定义,只是声明。在其他源文件,如果需要使用该变量,需要重新进行定义。 总体来说,头文件的作用是为了方便程序员在多个文件使用相同的函数变量和结构体。在实际编程,一般将函数声明放在头文件,而将函数定义放在源文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值