关于全局变量的变义的地方及函意,及如何避兔用Extern去声明外部变量?

  规则1:不要在.h文件中定义变量(事实上这个变量一定义肯定是全局变量)
原因概要:因为.h文件的只包含一次声明不能保证该.h文件在整个项目中被只编译一次!!!,尽管能保证在一个CPP文件中能只被编译一次.如果能保证,在.h中声明变量也就可以了.这是为什么没人这样做的原因.
即:在CPP中用到的全局变量,不能在对应的.h里面定义,否则很可能会引重定义的错误!(出现error Link2005:XXX已在YYY.obj在定义)
原因分析:.h文件头部的只包含一次声明指一个CPP文件包含一个特定的.h时只能包含其一次,也就是能保证,在该CPP中其只被编译一次!这很正常,包含一次就是为了只编译一次,但是:一个.h文件在一个项目中可能被别的CPP文件也用到了.尽管别的CPP也是只包含了该.h文件一次,也只编译了一次,但对整个工程开说,这个.h文件却被编译了多次.
#if !define AAA_H
#define AAA_H
.......
#endif
规则2:尽量不使用extern.如果想用,就在全局变量所在的CPP对应的.H中声明extern,然后在需要用的地方引用.H文件即可,实现了extern的隐藏!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值