(uint32)(((DataQueue *)0)->Buf

[复制链接]
 楼主| 火箭球迷 发表于 2010-7-27 16:32 | 显示全部楼层 |阅读模式
在数据队列创建函数
        uint8 QueueCreate(void *Buf,
                          uint32 SizeOfBuf,
                          uint8 (* ReadEmpty)(),
                          uint8 (* WriteFull)()
                          )
{
    DataQueue *Queue;
   
    if (Buf != NULL && SizeOfBuf >= (sizeof(DataQueue)))        /* 判断参数是否有效 */
    {
        Queue = (DataQueue *)Buf;

        OS_ENTER_CRITICAL();
                                                                /* 初始化结构体数据 */
        Queue->MaxData = (SizeOfBuf - (uint32)(((DataQueue *)0)->Buf)) /
                         sizeof(QUEUE_DATA_TYPE);
        Queue->End = Queue->Buf + Queue->MaxData;               /* 计算数据缓冲的结束地址 */
        Queue->Out = Queue->Buf;
        Queue->In = Queue->Buf;
        Queue->NData = 0;
        Queue->ReadEmpty = ReadEmpty;
        Queue->WriteFull = WriteFull;

        OS_EXIT_CRITICAL();

        return QUEUE_OK;
    }
    else
    {
        return NOT_OK;
    }
}
中计算最大数据数目然后给了Queue->MaxData,试问一下(uint32)(((DataQueue *)0)->Buf该如何理解?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:姚明的铁杆球迷

150

主题

3470

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:姚明的铁杆球迷

150

主题

3470

帖子

3

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