单片机C编程中,Struct的问题

爱学习的blue   2007-9-15 16:35 楼主
大家好:
我最近的程序有问题,刚学单片机C编程,请大家帮忙看一看啊,
源程 如下:想建立一个结构,该结构中,有一个指针xdata 空间的,有一个unsigned int 的数据是data 空间的:
struct zBuffer {       
        uchar   xdata   *pTB;              /*transmit buffer*/
        unsigned int   data   len;                         
           ......
              } ;

编译时就出错了,大概的意思是不认识  len这个变量,为什么。


回复评论 (4)

我的地址:myruru20052yahoo.com.cn 欢迎大家给我解释。谢谢!
点赞  2007-9-15 16:37
struct的定义属于type定义,有一个xdata * 的成员尚可接受,但没法接受data指定的成员,
因为整个的struct必须拥有相同的存储属性。

你的问题或许可以这样解决:

typedef struct _z_buffer {
    uchar xdata * pTB;
    unsigned int len;
} zBuffer;

/* 在data 域定义变量 */
zBuffer data z_buf;
zBuffer data z_array[10];
点赞  2007-9-15 18:13
struct zBuffer {
uchar   xdata   *pTB;      /*transmit buffer*/
unsigned int   data   len;  
           ......
      } ;

在结构里指定对象的存放区域会出现二异性.比如说:
当你的结构放在XDATA的时候,你定义的结构变量就违反了你声明的DATA区域

这时编译器就为难了,所以它就不干了
点赞  2007-9-15 19:58
很同意楼上2位说的!
点赞  2007-9-15 23:45
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复