2013-11-07 3 views
1

Я пытаюсь использовать реализацию 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

было бы очень полезно аннотировать строку, для которой была сообщена эта ошибка. – ensc

ответ

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; 
} 
Смежные вопросы