请问,这个预处理命令什么意思?>

[复制链接]
2742|9
 楼主| cozy 发表于 2007-12-20 10:59 | 显示全部楼层 |阅读模式
#define    EN_SRAM_BLE  *(unsigned char xdata *)ADDR_SRAM_BLE  = 0x00
computer00 发表于 2007-12-20 11:07 | 显示全部楼层

ADDR_SRAM_BLE是个地址,往这个地址里面写0。

 楼主| cozy 发表于 2007-12-20 13:30 | 显示全部楼层

*(unsigned char xdata *)

这是一种什么声明?就是声明外部RAM地址名的吗
computer00 发表于 2007-12-20 13:40 | 显示全部楼层

(unsigned char xdata *)是强制类型转换为这样的指针

前面的*,不用我说了吧?*p我们经常用的。
infree 发表于 2007-12-20 14:30 | 显示全部楼层

*(unsigned char xdata *)这种是访问外部RAM的常用的一种方法

虽然使用XBYTE之类的宏也可以访问外部RAM,但不如这种方式灵活。
ayb_ice 发表于 2007-12-20 19:50 | 显示全部楼层

XBYTE[ADDR_SRAM_BLE] = 0多省事

lelee007 发表于 2007-12-20 21:19 | 显示全部楼层

XBYTE如果不看原文件,鬼知道到底是什么意思

直接定义出来多方便,一看就明白
哈哈
ayb_ice 发表于 2007-12-21 08:29 | 显示全部楼层

无语啊

渤海三叠浪 发表于 2009-4-21 23:24 | 显示全部楼层

以前一直不想用强制转换!

对于(unsigned char xdata *)ADDR_SRAM_BLE

请问是说 地址ADDR_SRAM_BLE的数据类型是unsigned char xdata呢?

还是地址ADDR_SRAM_BLE的内存的数据类型是unsigned char xdata呢?


应该是 后者吧?? 
computer00 发表于 2009-4-21 23:43 | 显示全部楼层

要把它当作一个整体来看待

(unsigned char xdata *)ADDR_SRAM_BLE   它是一个整体,相当于一个指针。

该指针指向的类型为unsigned char xdata型的,指向的地址为ADDR_SRAM_BLE。


相当于
unsigned char xdata * p;
p=ADDR_SRAM_BLE;
*p=0;


(unsigned char xdata *)ADDR_SRAM_BLE就等价于上面代码中的p了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

94

主题

178

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部