c语言全局变量6,C语言全局变量定义方法

今天调试系统的时候,需要定义几个全局位变量,定义好后一编译,发现错误一大堆,错误基本都是位变量定义时产生的。以前也定义过全局变量啊,但是先前怎么没错误?瞎折腾了一会最后还是发现问题出在细节上面了。以前只是侥幸没遇到而已。今天做个总结,以后再忘记了就回来直接查一下。

我们都知道定义在函数外部的变量就叫做全局变量,但是通常只有一个C文件和一个H文件的时候那样定义是不会出问题的。一个大的系统会包含好多个.C文件和.H文件,每个.C文件都有可能会访问全局变量,所以全局变量在定义的时候就要稍微做下改变了。通常的做法是建立一个包含系统所有全局变量的.H文件,系统用到的所有全局变量都定义在该文件内,文件名可以用Global修饰一下。在该文件中定义某个全局变量的时候需要用extern声明该变量为外部变量。比如要定义SysEventCounter标志为unsigned char型的全局变量可以这样定义:

extern unsigned char SysEventCounter; 

上述声明是写在.H文件中的。其他.C文件若要用到该变量,直接包含该.H文件就可以了

如果想要赋初值,可以在用到它的.C文件中这样写:

unsigned char SysEventCounter = 0;

不用赋初值时,直接

unsigned char SysEventCounter;

就可以了。注意:只需要在一个.C文件中写即可,其他.C文件直接可以用。如果在其他.C文件中也这样写会产生重复定义的错误。

全局变量对变量的类型不限制,任何类型都可以,只要按照上述方法定义就不会有错误。

重要的是搞清楚C里面的声明和定义的概念,一个全局变量可以声明多次,但是只能定义一次。

还要注意的是,静态全局变量和全局变量是有区别的,静态全局变量被多个单元引用后,相对于被定义了多次,而且相当于是各个文件独立的全局变量,而全局变量要在整个系统中公用,那么引用它的源文件只需要用extern做声明即可,注意的是:全局变量只需要在任何一个文件中有且只定义一次即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值