标签:
能不能一种链表中链接不同的类型呢,相应这种号召,内核链表诞生了。
内核链表之所以能够链接不同的类型的数据,是因为它和普通链表不一样,它链接的不是数据结构的起始地址,而是链接的该数据结构中的的list_head属性。
下面是比较重要的函数:
其他的都很简单,专门介绍一下list_entry函数:
函数最后返回的是这个结构体节点起始地址。Ptr是这个节点中list_head属性的地址,type是这个结构体节点的真实类型,member是这个结点中list_head属性的名字。
其中typeof关键字调用 0->member而没有出错,个人认为这是因为typeof并不对表达式求值,只是利用了其类型,所以不会出错。
可以使用如下方式调用:
Struct list_head * pos;
Struct student *tmp;
Tmp = list_entry(pos,struct list_head,pointer);
下面是一段标准使用代码:
标签:
原文地址:http://www.cnblogs.com/dchipnau/p/4993316.html