我是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;
}
答案 0 :(得分:3)
您的C文件从未包含头文件,因此未定义类型ssl
。
您需要在C文件的顶部包含标题。然后,您需要从C文件中删除struct
个定义,因为它们已在标题中定义。