link.h里的这几行代码老感觉哪里不对,大神帮忙看一下额 static inline void __list_add(struct list_head *new, struct list_head *prev, struct list_head *next) { next->prev = new; new->next = next; new->prev = prev; prev->next = new; } static inline void list_add(struct list_head *new, struct list_head *head) { __list_add(new, head, head->next); } static inline void list_add_tail(struct list_head *new, struct list_head *head) { __list_add(new, head->prev, head); } 内联函数为了不占用额外的资源不就在调用的时候展开, 根本没有重新分配空间 上面一个自然木有问题,下面一个不就是替换成这样了么, head->prev = new; new->next = head; new->prev = head->prev; head->prev->next = new; 第三行这一行head的prev不是已经断了接到new了么,不成了自己连自己了?? (责任编辑:IT) |