未知的类型名称' sll'。结构问题

时间:2017-01-19 17:36:17

标签: c

我是C的新手,我的结构被列为未知类型。我不能改变我的教授写的方法签名,他将从外部代码链接到它们。

sll.c:6:1: error: unknown type name 'sll'
sll *newSLL(void (*d)(FILE *, void*)) { 
in function 'newSLL';

编辑:添加了实际错误

HEADER FILE:

#ifndef __SLL_INCLUDED__
#define __SLL_INCLUDED__

typedef struct sllnode {
    void *value;
    struct sllnode *next;
} sllnode;

typedef struct sll {
    sllnode *head;
    sllnode *tail;
    int size;
    void (*display)(FILE *,void *);
} sll;

extern sll *newSLL(void (*d)(FILE *,void *)); 

C FILE:

#include <stdio.h>
#include <stdlib.h>

struct sllnode {
    void *value;
    struct sllnode *next;
} *sllnode;

struct sll {
    struct sllnode *head;
    struct sllnode *tail;
    int size;
    void (*display)(FILE *,void *);
} *sll;

sll *newSLL(void (*d)(FILE *,void *)) {
    struct sll *items = malloc(sizeof(sll));
    if (items == 0){
        fprintf(stderr,"out of memory");
        exit(-1);
    }

    items->head = 0;
    items->tail = 0;
    items->size = 0;
    items->display = d;
    return items;
}

1 个答案:

答案 0 :(得分:3)

您的C文件从未包含头文件,因此未定义类型ssl

您需要在C文件的顶部包含标题。然后,您需要从C文件中删除struct个定义,因为它们已在标题中定义。