功能:两个cpp文件都要使用一个全局变量

介绍

  1. A.h 中定义 bool Laser_Statues[10];,A.cpp中#include “A.h”
  2. 因为B中也要使用该变量,故 B.cpp中 #include “A.h”,在B.ccp中使用该变量,但是提醒 LNK2005 已经在*.obj中定义

解决方法

  1. 在A.h中声明 extern bool Laser_Statues[10];
  2. 在A.cpp中定义 bool Laser_Statues[10] = {};

知识点

1.为什么会出现已经定义的问题?
已经排除掉头文件重复包含的问题,并且每个头文件里面都加入#pragma once。原因是因为每个cpp文件在编译的时候都是独立的,A在编译的时候用到该变量,B在编译的时候也用到了该变量,所以会重定义
2.为什么要在加extern?
据C++标准的规定,一个变量声明必须同时满足两个条件,否则就是定义:

  • 声明必须使用extern关键字
  • 不能给变量赋初值
    因为大家都要用到该变量,故需要让大家都知道他的存在(声明),头文件中应使用extern关键字声明全局变量,具体的定义在cpp中实现。头文件中不建议定义变量,不专业

extern更多相关的知识点

https://www.cnblogs.com/invisible2/p/6905892.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值