队列的操作方式以及队列结构体

#define SER_BUF_SIZE               (128)  //队列长度
#define SER_BUF_MASK               (SER_BUF_SIZE-1ul)     //用于队列掉头        

#define SER_BUF_RESET(serBuf)      (serBuf.rdIdx = serBuf.wrIdx = 0)  //初始化队列
#define SER_BUF_WR(serBuf, dataIn) (serBuf.data[SER_BUF_MASK & serBuf.wrIdx++] = (dataIn))  //往队列写数据
#define SER_BUF_RD(serBuf)         (serBuf.data[SER_BUF_MASK & serBuf.rdIdx++])  //从队列读数据
#define SER_BUF_EMPTY(serBuf)      (serBuf.rdIdx == serBuf.wrIdx)  //判断队列为空
#define SER_BUF_FULL(serBuf)       (serBuf.rdIdx == serBuf.wrIdx+1)  //判断队列为满
#define SER_BUF_COUNT(serBuf)      (SER_BUF_MASK & (serBuf.wrIdx - serBuf.rdIdx))  //计数队列里的数据个数

typedef struct __SER_BUF_T {
  unsigned char data[SER_BUF_SIZE];
  unsigned int wrIdx;
  unsigned int rdIdx;
} SER_BUF_T;    //队列结构体

猜你喜欢

转载自www.cnblogs.com/qingyunboke/p/12749621.html