在数据队列创建函数<br /> uint8 QueueCreate(void *Buf,<br /> uint32 SizeOfBuf,<br /> uint8 (* ReadEmpty)(),<br /> uint8 (* WriteFull)()<br /> )<br />{<br /> DataQueue *Queue;<br /> <br /> if (Buf != NULL && SizeOfBuf >= (sizeof(DataQueue))) /* 判断参数是否有效 */<br /> {<br /> Queue = (DataQueue *)Buf;<br /><br /> OS_ENTER_CRITICAL();<br /> /* 初始化结构体数据 */<br /> Queue->MaxData = (SizeOfBuf - (uint32)(((DataQueue *)0)->Buf)) / <br /> sizeof(QUEUE_DATA_TYPE);<br /> Queue->End = Queue->Buf + Queue->MaxData; /* 计算数据缓冲的结束地址 */<br /> Queue->Out = Queue->Buf;<br /> Queue->In = Queue->Buf;<br /> Queue->NData = 0;<br /> Queue->ReadEmpty = ReadEmpty;<br /> Queue->WriteFull = WriteFull;<br /><br /> OS_EXIT_CRITICAL();<br /><br /> return QUEUE_OK;<br /> }<br /> else<br /> {<br /> return NOT_OK;<br /> }<br />}<br />中计算最大数据数目然后给了Queue->MaxData,试问一下(uint32)(((DataQueue *)0)->Buf该如何理解? |
|