我是C的新手,我的结构被列为未知类型时遇到了问题。我不能更改方法签名,因为它们是由我的教授编写的,他将从外部代码链接到它们。
sll.c:6:1: error: unknown type name 'sll'
sll *newSLL(void (*d)(FILE *, void*)) {
in function 'newSLL';编辑:添加实际错误
头文件:
#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文件:
#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;
}发布于 2017-01-20 01:53:31
您的C文件从未包含过头文件,因此没有定义类型ssl。
您需要在C文件的顶部包含您的头文件。然后,您需要从C文件中删除struct定义,因为它们已经在头文件中定义。
https://stackoverflow.com/questions/41748214
复制相似问题