list_entry的用法

LLL_mj 2014-10-27 07:35:58
我编了一个小程序 在list_entry的那个语句报错 因为我是仿照网站别人的程序写的 看不出来到底错在哪里 忙着教作业 希望大神帮下忙

struct number
{
int num;
struct list_head list;
};
int main(void) {
struct number *tmp;
struct list_head *pos,*n;
int num_i;
//定义并初始化一个链表头
struct number number_head;
INIT_LIST_HEAD(&number_head.list);

for(num_i=0;num_i<10;num_i++)
{
tmp=(struct number*)malloc(sizeof(struct number));
tmp->num=num_i;
//吧这个节点链接到链表后面
//这里因为每次的节点都是加在number_head的后面,所以先进来的节点就在链表的最后面
list_add(&(tmp->list),&(number_head.list));
}

//下面把这个链接表中各个节点的值打印出来
printf("\n");
printf("-----------the list------------");
list_for_each(pos,&number_head.list)
{
tmp = list_entry(pos, struct number, list);
printf("number: %d \n",tmp->num);
}
return 0;
}


其中list_entry的定义如下

/**
* list_entry - get the struct for this entry
* @ptr: the &struct list_head pointer.
* @type: the type of the struct this is embedded in.
* @member: the name of the list_struct within the struct.
*/
#define list_entry(ptr, type, member) \
container_of(ptr, type, member)

头文件就是加了个linux下的list.h
...全文
683 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
空的 2014-10-28
  • 打赏
  • 举报
回复
list_entry(pos, struct number, list) ==>> list_entry(pos, struct number,&number_head.list); list没定义 其实这个头文件就是一坨宏 list_entry 最主要的是一步 指针地址运算
zhxianbin 2014-10-27
  • 打赏
  • 举报
回复
贴出错误,是不是 container_of ?

18,777

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧