C(可変長配列)でリストを作成できるプログラムを作成しようとしていますが、コンパイル時に「互換性のないポインタ型からの代入」エラーが発生します。リストプログラムの互換性のないポインタ型からの代入
エラーは、これらのライン上にある:
list_item *last = l->first;
last = last->next;
last->next = item;
コード:あなたは1-かどうかを確認する必要がありadd_to_listで
typedef struct{
struct list_item *next;
void *data;
} list_item;
typedef struct{
list_item *first;
unsigned int len;
} list;
list *new_list(){
list *l = (list *) malloc(sizeof(list));
l->first = NULL;
l->len = 0;
return l;
}
list_item *new_list_item(){
list_item *item = (list_item *) malloc(sizeof(list_item));
item->next = NULL;
item->data = NULL;
return item;
}
void add_to_list(list *l, void *data){
if(l == NULL || data == NULL){
return;
}
list_item *item = new_list_item();
item->data = data;
int i;
list_item *last = l->first;
for(i = 0; i < l->len; i++){
last = last->next;
}
last->next = item;
l->len++;
}
とはどこですか? –
['malloc()'と 'C 'のファミリの戻り値をキャストしない理由についてのこのディスカッションを参照してください。](http://stackoverflow.com/q/605845/2173917)。 –
'struct list_item * next;' ...どのように?そこに 'struct list_item'はありません... –