结构体重复定义的问题!!引用

我在game.h中写了structSNAKE{ucharHead_X;//舌头坐标ucharHead_Y;ucharTail_X;//蛇尾的坐标ucharTail_Y;u... 我在game.h中写了
struct SNAKE
{
uchar Head_X;//舌头坐标
uchar Head_Y;
uchar Tail_X;//蛇尾的坐标
uchar Tail_Y;
uchar Direction;//移动方向
uint Dot_Cnt;//蛇身长度
};
struct SNAKE snakedata;
game.c中引用编译没有问题。
但是在main.c中,引用了snakedata.Head_Y,出现了
Error[Pe020]: identifier "SNAKE" is undefined D:\MSP程序\play\tanchise\main.c 5
的问题;
我在main.c前面写了include"game.h",和extern SNAKE snakedata;

或者我不要extern SNAKE snakedata;这一句
出现了
Error[e27]: Entry "snakedata" in module game ( D:\MSP程序\play\tanchise\Debug\Obj\game.r43 ) redefined in module main ( D:\MSP程序\play\tanchise\Debug\Obj\
重复定义这一问题。
求大神指教!!!!!!!!
展开
 我来答
浑杨氏刑娴
2019-08-05 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.3万
采纳率:29%
帮助的人:684万
展开全部
我见过这样的题,没看懂你的意思,不过我看这样说吧,
struct
a
{...
}b;
我打。。。的地方表示你可以在那里添加所有的数据形式的定义,比如,int
a;char
a[10];等等;
而b表示变量名。就如同int
a的a一样,只是一个变量标示符,他就是一个结构体变量了。当你使用typedef使,它表示的是枚举类型,功能如同宏定义一样,
使用他的时候方法如下:
首先
写出你要表示的变量类型。列如:int
a;然后在int的前面加上typedef,
typedef
int
a;然后把变量名a
改变成你要使用的表示符如
pp;
现在就变成
typedef
int
pp;
当你要在定义其他的变量是int型的时候,你就可以这样定义了
pp
b;
这里的b就是变量名了。注意枚举类型它并不产生新的变量类型,只是一种替代作用。我在给你举个列子吧
typedef
struct
a{
int
s;
char
p[10];
}
num;
num
n;
这时候n就是
struct
a
类型的结构体变量了。不知道你懂没有。。。
kyotrue
推荐于2017-11-26 · TA获得超过1.5万个赞
知道大有可为答主
回答量:2.3万
采纳率:75%
帮助的人:6611万
展开全部
你在game.h里面定义了全局变量啊,两个c文件都引用这个头文件,当然变量会重定义了。
在game.c中定义struct SNAKE snakedata;
在game.h中extern SNAKE snakedata;
然后main.c中只需要include"game.h",
更多追问追答
追问
还是不行啊。。这是game.h里面的。
struct SNAKE
{
。。省略

};
extern SNAKE snakedata;
这是game.c里面的::
struct SNAKE snakedata;
现在编译game.c就会出现:

Error[Pe020]: identifier "SNAKE" is undefined D:\MSP程序\play\tanchise\game.h 23
追答
extern SNAKE snakedata;
改成extern struct SNAKE snakedata;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式