访问其他文件中的变量

如下图,在此头文件中定义一个全局变量:

然后在另一个文件里使用它:

会报“重复定义”的错:

查看编译输出:

这两个文件都生成了.o文件,也就是编译没问题,问题出在链接的时候。

出现此问题的原因是这两个文件是分开编译的,main.cpp文件包含(include)了<widget.h>文件,在编译器预处理时会将#include指令指定的头文件包含进来,也就是编译前main.cpp里面包含了一份<widget.h>文件的拷贝副本,没有语法错误则编译没问题,每个文件编译后会生成独立的标识符和符号表。在链接的时候,会将工程中所有的符号整合在一起,由于文件中有重复的变量,即报错。

解决此问题方法:

1、变量改成static变量;

2、.h中使用extern声明变量,在<widget.cpp>中定义,这样因为main.cpp中只包含了<widget.h>文件,<widget.h>中没有定义变量自然也谈不上“重复定义”的问题了(一个变量可以声明多次但只能定义一次)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值