打印

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

[复制链接]
1354|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
火箭球迷|  楼主 | 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

粉丝