关于变量的外部声明

  在比较大的项目中,若需要使用全局变量,可以分以下四个步骤进行:

  1. 在项目根目录/include/globalvar.h中进行所有变量的原型声明(如int a);
  2. 在项目根目录/include/externvar.h中进行所有变量的外部声明(如extern int a);
  3. 在main.cpp文件中包含glbvariable.h头文件;
  4. 若需要在其它源文件中使用全局变量,则应包含externvar.h头文件。

 

  需要注意的是,若globalvar.h中需要改动,则必须删除原目标文件main.o,使用make重新编译。原因如下:

  根据Makefile的机制,若目标文件main.o修改时间晚于依赖文件main.cpp的修改时间,则不进行重新编译。而依赖文件main.cpp所包含的globalvar.h存在变动,并不在main.cpp的修改时间上得以体现,即main.cpp是不变的。而在link阶段,根据extern的机制,在已加载到内存中的目标文件代码中寻找该变量,若main.o 不是最新的,globalvar.h的改动就无法生效,于是就会出现找不到该变量的错误(undefined reference to ‘XXX’. Collect2: ld returned 1 exit status.).

转载于:https://www.cnblogs.com/YoungHit/archive/2012/06/22/2558748.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值