(1)#define XBYTE ((unsigned char volatile xdata *) 0)
(2)#define COM0 XBYTE[0x8000]
这里语句1是keil 中absacc.h文件定义的,仔细分析是定义XBYTE为一个指向地址0的指针,那是否可以理解成XBYTE等于*0;
如果按照这样的理解,语句2中的XBYTE[0x8000] 数组是否可以理解成,*0[0x8000] 呢?很想知道这种定义方式是怎样将COM0的地址设置成0x8000的,不太理解第2条语句。特此请教。
我尝试过更改语句1为#define XBYTE ((unsigned char volatile xdata *) 5),结果程序编译的时候,COM的地址变成了0x8005,这是为什么呢? |