|
发表于 2009-3-26 16:32:58
|
显示全部楼层
Gorgon Meducer 傻孩子:
我来说两句,看你的程序头都大了,由于到处都是宏定义。
以下是我写的队列程序,自已看起来容易读懂,别人也容易读懂。
#define QUEUE_MAX_LENGTH (100)
typedef struct tagELEMENT
{
INT8U bVal;
INT16U Addr;
} ELEMENT , *ELEMENT_PTR;
struct EEPROM_QUEUE
{
ELEMENT element[QUEUE_MAX_LENGTH];
INT8U rear;
INT8U front;
};
struct EEPROM_QUEUE QUEUE;
void QUEUE_Init(void)
{
QUEUE.rear = 0;
QUEUE.front = 0;
}
BOOL QUEUE_EMPTY(void)
{
if (QUEUE.rear == QUEUE.front)
return (TRUE);
return (FALSE);
}
BOOL QUEUE_FULL(void)
{
if ((QUEUE.rear+1) % QUEUE_MAX_LENGTH == QUEUE.front)
return (TRUE);
return (FALSE);
}
BOOL QUEUE_In(ELEMENT element)
{
if (!QUEUE_FULL())
{
QUEUE.rear = (QUEUE.rear + 1) % QUEUE_MAX_LENGTH;
QUEUE.element[QUEUE.rear].bVal = element.bVal;
QUEUE.element[QUEUE.rear].Addr = element.Addr;
return (TRUE);
}
return (FALSE);
}
BOOL QUEUE_Out(ELEMENT *element)
{
if (!QUEUE_EMPTY())
{
QUEUE.front = (QUEUE.front + 1) % QUEUE_MAX_LENGTH;
element->bVal = QUEUE.element[QUEUE.front].bVal;
element->Addr = QUEUE.element[QUEUE.front].Addr;
return (TRUE);
}
return (FALSE);
} |
|