#关于全局变量的理解与头文件、extern的综合运用

本文作者在编写大作业时,通过头文件组织代码,发现.cpp中的全局变量并非真正意义上的全局。问题在于.h头文件无法直接访问.cpp中的变量。解决方案是使用extern关键字在头文件中声明变量,使得变量能在不同文件间共享。extern主要功能是引用其他文件定义的变量,并在变量定义前进行声明。
摘要由CSDN通过智能技术生成
写在前面:借写课程大作业的时候,摆脱平常只写百来行代码的局限,尝试使用头文件使代码条理更清晰。结果发现想象中.cpp的“全局”并非实际的项目的全局。折腾了许久,得到此篇收获总结。

问题描述:

为了减少小游戏编程中函数复杂的参数传递,在.cpp文件中定义了如下“个人自以为是全局变量”的变量

/*********************全局变量***************************/

struct Player player[Playernum];//两个玩家
struct Shell shell[Playernum];//两个玩家的武器
struct Wind wind;//风力与风向
int turn;//玩家轮回
int GameMode;游戏模式选择 0为普通对战 1为无尽模式

 /*----------无尽模式 ---------------*/
IMAGE enemy_pic;//ai的图片
IMAGE enemy_pic_mask;//ai的图片掩码
List Leftlist, Rightlist;//无尽模式下ai链表

/*---------- micro map ---------------*/

IMAGE	GPS_image;					// 迷你地图,用于显示游戏者在地图中的位置
POINT	 GPS_position[2];					// 迷你地图中玩家的显示位置
SIZE	GPS_size;					// 迷你地图的尺寸

并希望在.h头文件定义的函数中对.cpp定义变量进行调用。

结果发生如下报错:


解决方案:

在.h头文件中进行外部变量extern的声明

/*********************全局变量***************************/

extern struct Player player[Playernum];//两个玩家
extern struct Shell shell[Playernum];//两个玩家的武器
extern struct Wind wind;//风力与风向
extern int turn;//玩家轮回
extern int 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值