把全局变量定义在.h文件中的引起连接错误的原因以及解决办法

把全局变量定义在.h文件中的引起连接错误的原因以及解决办法:

原因:

如果在a.h中定义了int test变量, 在被includemain.cpp中的时候会造成link error;

cl a.cpp, cl main.cpp生成的a.obj, main.obj, 在两个obj文件中都有test定义, 连接时发生错误.

解决办法:

a.h文件中使用extern int test; 相应的a.cpp文件中定义test: int test;这种是标准的用法. 生成的obj文件中仅有a.obj中有test符号信息, main.obj没有.从而不再出现连接错误; 再次,声明多次是没有关系的, 但是定义多次会出现错误!

其他:

一般.h文件仅仅是用作变量,函数等声明, 不作变量,函数定义. .cpp文件则作定义以及实现.

关键是要理解编译器处理头文件的过程. 如果经常用命令行,gcc编译代码的话, 应该比较容易理解.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值