“名称"的存储大小未知 [英] storage size of ‘names’ isn’t known
本文介绍了“名称"的存储大小未知的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在编译这个 .c 源文件时遇到这个错误
I get this error while compiling this .c source file
/INIT_SOURCE_BUILD/src/names_list.c:7:错误:名称"的存储大小不是已知
/INIT_SOURCE_BUILD/src/names_list.c:7: error: storage size of ‘names’ isn’t known
#include <stdio.h>
#include "list.h"
int main(){
struct List names;
names->size = 3;
struct ListElmt michael;
struct ListElmt john;
struct ListElmt adams;
names->head = michael;
michael->data = 12;
michael->next = john;
john->data = 14;
john->next = adams;
adams->data = 16;
struct ListElmt pointer = List->head;
for(int x = 0; x < 3 ; x++){
printf("Iteration.%d data: %d", x, pointer->data);
pointer->next = pointer->next->next;
}
}
这里是这个链表的头部
#ifndef LIST_H
#define LIST_H
#include <stdio.h>
/* Define linked list elements*/
typedef struct _ListElmt{
void *data;
struct _ListElmt *next;
} ListElmt;
/* Define a structure for the list*/
typedef struct _List{
int size;
int (*match)(const void *key1, const void *key2);
void (*destroy)(void *data);
ListElmt *head;
ListElmt *tail;
} List;
void list_init(List *list, void (*destroy)(void *data));
void list_destroy(List *list);
int list_ins_next(List *list, ListElmt *element, const void *data);
int list_rem_next(List *list, ListElmt *element, void **data);
int list_size(const List *list);
ListElmt *list_head(const List *list);
ListElmt *list_tail(const List *list);
int list_is_head(const ListElmt *element);
int list_is_tail(const ListElmt *element);
void *list_data(const ListElmt *element);
ListElmt *list_next(const ListElmt *element);
#endif
推荐答案
当你 typedef
一个 struct
这样的时候,你不必使用 struct
声明时:
When you typedef
a struct
like that, you don't have to use struct
when declaring it:
List names;
代替
struct List names;
它也不是指针,所以 names->size
应该是 names.size
.
It's also not a pointer, so names->size
should be names.size
.
这篇关于“名称"的存储大小未知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文