首先,看一下queue中最基本的幾個宏:
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)))
首先,QUEUE被聲明成一個"具有兩個char*元素的指針數(shù)組",如下圖: