“名称"的存储大小未知 [英] storage size of ‘names’ isn’t known

查看:43
本文介绍了“名称"的存储大小未知的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在编译这个 .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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆