首先,看一下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*元素的指针数组",如下图:


