Queue->MaxData = (SizeOfBuf - (uint32)(((DataQueue *)0)->Buf)) / sizeof(QUEUE_DATA_TYPE); /* 计算队列可以存储的数据数目 */
其中(uint32)(((DataQueue *)0)->Buf))是什么意思? 是指空结构体指针指向结构体中的成员吗?
参考内容: typedef struct { QUEUE_DATA_TYPE *Out; /* 指向数据输出位置 */ QUEUE_DATA_TYPE *In; /* 指向数据输入位置 */ QUEUE_DATA_TYPE *End; /* 指向Buf的结束位置 */ uint16 NData; /* 队列中数据个数 */ uint16 MaxData; /* 队列中允许存储的数据个数 */ uint8 (* ReadEmpty)();/* 读空处理函数*/ uint8 (* WriteFull)();/* 写满处理函数 */ QUEUE_DATA_TYPE Buf[1]; /* 存储数据的空间 */ } DataQueue;
SizeOfBuf是Buf的字节长度。 QUEUE_DATA_TYPE是指可定义的数据类型可以Uint8,Uint32,等。 Queue是DataQueue型结构体。
|