projectbox 发表于 2011-9-18 09:56:40

求助:keil中编译xdata的问题

xxx.c中-----------------------------------
include"xxx.h"
int8u xdata TempBuff;

xxx.h中-----------------------------------
extern int8u TempBuff;

编译出现错误,说是TempBuff重复定义了,但事实上应该是没有重复定义的。把xdata删除或者改成data就通过编译了。
请各位大虾指点

20061002838 发表于 2011-9-18 10:35:51

1,extern int8u xdata TempBuff;

定义的变量在外部存储区,
声明的变量却在内部存储区,
如果不报错就是编译器有问题

2,把xdata删除或者改成data就通过编译了

C51的变量默认存储在内部数据存储区,也就是说默认的关键字是data
char i 跟 char data i 是等价的
你把xdata删除或者改成data就是把变量定义在内部数据存储区了

projectbox 发表于 2011-9-18 15:01:18

已经搞定了,原来.C和.H必须同时为xdata
xxx.c中-----------------------------------
include"xxx.h"
int8u xdata TempBuff;

xxx.h中-----------------------------------
extern int8u xdata TempBuff;

这样就通过编译了

谢谢大家

20061002838 发表于 2011-9-18 18:09:39

LZ 在百度或者论坛里面搜索
Keil–C51 编译器用户手册
好好看看吧,很有用的
上传过很多回了就不再上传了

gwdong 发表于 2011-9-18 19:50:02

定义和声明一致就OK。

xfdr 发表于 2013-5-5 00:17:23

又会一点,{:tongue:}
页: [1]
查看完整版本: 求助:keil中编译xdata的问题