C全局变量使用简介

作为一个C语言萌新。在平时练习中遇到这样一种情况:希望我在头文件中定义的全局变量可以被多个.c文件公用。

开始我直接子头文件中写一个定义如inta; 但是问题很快就来了,编译的时候,编译器报错,多次定义a。在这里应该考虑的是,头文件在编译过程中,是直接加在.c文件前面的,也就是说,我们定义之后,每一个文件中,都会出现一个int a;的定义。

也就是上述原因,我展现了我萌新本质,在int a;前添加了static。嘿,编译器果然没报错,编译顺利通过。结果呢,几个.c文件之间并没有共享int a;这个全局变量。查资料后发现,static 能将变量向其他文件隐藏。几个.c文件中的定义之间没有半毛钱关系,根本不知道互相的存在。

那么怎么办呢?

正确的解决办法,使用extern关键字来声明变量为外部变量。在我的主函数中定义一个int a;其他需要使用a的.c文件通过extern int a;来声明一次。就可以共享这个变量a了。如下图:



现在距离我们最终需要的结果只差一步了:将int a;的定义放到.h文件中,同事问题也回到了第一步。经过查资料,可以通过条件编译的方法来解决这个问题。


在.h文件中,添加条件编译,在main中定义MAIN,在编译过程中,inta;就不会添加到test.c中了。编译运行,通过。

 

此文仅为萌新自我记录与分享,如有其它方法,或这种方法有什么缺点,请大牛不吝赐教,谢谢!



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值