我目前正在研究一個ZigBee WSNDemo項目,並且我被困在這部分代碼中。基本上,我必須在appInitMsgSender
函數中將此宏用於隊列目的。使用MACROS隊列
void appInitMsgSender(void)
{
txState = APP_MSG_TX_FREE_STATE;
resetQueue(&appToSendQueue);
resetQueue(&appFreeQueue);
resetQueue(&appSentQueue);
resetQueue(&appDoneQueue);
for (uint8_t i = 0; i < ARRAY_SIZE(appTxBuffers); i++)
{
putQueueElem(&appFreeQueue, &appTxBuffers[i].next);
}
}
以上是應用程序的消息發送初始化函數。以下是使用它的宏。我想知道如何連接。我的意思是如何理解這段代碼的工作。
#define DECLARE_QUEUE(queue) QueueDescriptor_t queue = {.head = NULL,}
// Type of queue element
typedef struct _QueueElement_t
{
struct _QueueElement_t *next;
} QueueElement_t;
// Queue descriptor
typedef struct
{
QueueElement_t *head;
} QueueDescriptor_t;
INLINE void resetQueue(QueueDescriptor_t *queue)
{
queue->head = NULL;
}
我真的很困惑,在這裏使用指針。我知道指針的工作原理和背後的理論。但在上述情況下,我感到困惑。