我正在尝试使用linux的链接列表(list.h)的内核实现,但我不断收到以下错误: - 无效的类型参数 - > (有'int')
struct klist
{
int data;
struct list_head list;
};
int main()
{
int i;
struct klist *_lptr;
LIST_HEAD(klist_head);
for(i=0;i<10;i++)
{
_lptr=(struct klist*)malloc(sizeof(struct klist));
_lptr->data=i;
}
list_for_each_entry(_lptr,&klist_head,list)
{
printf("%d\n",_lptr->data);
}
}
答案 0 :(得分:1)
我编译并运行了您的代码,没有报告错误。 (gcc 4.6.3,kubuntu 12.04)
我也在下面写一个。
#include <stdio.h>
#include <stdlib.h>
#include "list.h"
typedef struct klist{
int data;
struct list_head list;
}klist;
int main()
{
LIST_HEAD(klist_head);
/* allocate the list */
int i = 0;
klist *_lptr = NULL;
for(i = 0; i < 10; i++){
_lptr = (klist*) malloc(sizeof(klist));
_lptr->data = i;
list_add(&_lptr->list, &klist_head);
}
/* print the list */
list_for_each_entry(_lptr, &klist_head, list){
printf("%d\n", _lptr->data);
}
/* free the list */
struct list_head *pos = NULL, *temp = NULL;
list_for_each_safe(pos, temp, &klist_head){
_lptr = list_entry(pos, klist, list);
list_del(pos);
free(_lptr);
}
return 0;
}