C语言h文件可以定义变量吗,C语言h文件头中的变量初始化

很多时候,C程序员需要在文件头中初始化变量,如果没有好的宏定义方式,往往会导致多个文件引

用时,出现大量编译错误。以下C文件头定义方式,可以很好避免这些错误出现:

1.编写c_def.h文件头,内容为:

#undef  INIT_DEF_VAR

#undef  DEF_EX

#undef  DEF_EX_I

#define  DEF_EX           extern

#define  DEF_EX_I(x1)     extern  x1;

2.编写def_var.h文件头,内容为:

#undef      DEF_EX

#undef      DEF_EX_I

///

#define     DEF_EX

#define     DEF_EX_I(x1) x1

#define     INIT_DEF_VAR

3.编写用户文件头,例如eye.h

efdf463ef630b45f0a0e53709b4578be.png

4.编写另一个用户文件头,例如hd.h

#ifndef __HD_H__

#define __HD_H__

#include "c_def.h"

#ifdef  _NOW_DEF_VAR_HD

#include "def_var.h"

#endif

//

#include "eye.h"   //文件头相互嵌套,没有问题

/

DEF_EX int hdi1; //每一个变量前面添加DEF_EX

/

/

/

/

struct STDEMO

{

int x;

float y;

};

//以下为有初始化值的变量//如果需要初始化变量前面添加DEF_EX_I

DEF_EX_I(struct STDEMO stDemo1[])

#ifdef INIT_DEF_VAR

={

{33,3.4},

{27,9.7}

};

#endif

//

void prg2(void);

#endif

5. 编写C函数实体,例如eye.c

#define _NOW_DEF_VAR_EYE  //这个宏定义用于实例化在eye.h中定义的变量。书写格式为

_NOW_DEF_VER_加上文件头的名字EYE

#include"eye.h"

void prg1(void)

{

testi1=10;

testdat1[1]=20;

testint1=8;

}

6.编写另外一个C函数实体文件,例如hd.c

#define _NOW_DEF_VAR_HD//这个宏定义用于实例化在hd.h中定义的变量。书写格式为

_NOW_DEF_VER_加上文件头的名字HD

#include"eye.h"

#include"hd.h"

void prg2(void)

{

testi1=30;

testdat1[1]=15;

hdi1=10;

stDemo1[1].x=5;

}

6.编写主函数main.c

#include"eye.h"

#include"hd.h"

void Main(void)

{

prg1();

prg2();

testi1=12;

testdat1[1]=13;

}

7.编译。结果可以看到,不管文件头.h文件怎么嵌套引用,所有变量(包括初始化了的变量)都不

会出现错误或报警。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值