首先,看一下queue中最基本的幾個(gè)宏:

復(fù)制代碼
1 typedef void *QUEUE[2]; 2 3 /* Private macros. */ 4 #define QUEUE_NEXT(q)       (*(QUEUE **) &((*(q))[0])) 5 #define QUEUE_PREV(q)       (*(QUEUE **) &((*(q))[1])) 6 #define QUEUE_PREV_NEXT(q)  (QUEUE_NEXT(QUEUE_PREV(q))) 7 #define QUEUE_NEXT_PREV(q)  (QUEUE_PREV(QUEUE_NEXT(q)))
復(fù)制代碼

     首先,QUEUE被聲明成一個(gè)"具有兩個(gè)char*元素的指針數(shù)組",如下圖: