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