Я новичок в C и у меня проблемы с моими структурами, которые перечислены как неизвестные типы. Я не могу изменить сигнатуры метода, поскольку они написаны моим профессором, и он будет связываться с ними из внешнего кода.Неизвестный тип имени 'sll'. Проблема с structs
sll.c:6:1: error: unknown type name 'sll'
sll *newSLL(void (*d)(FILE *, void*)) {
in function 'newSLL';
EDIT: добавлены фактические ошибки
Заголовочный файл:
#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;
}
Пожалуйста, уточните свой вопрос с фактическими ошибками, которые вы получаете, в полном объеме и неотредактированными. Скопируйте их в текст как текст. Затем, когда вы обновляете вопрос, укажите * где * в исходном коде вы получите ошибку, например, комментарием. –
Но как подсказка: у вас есть два символа с именем 'sllnode', но это разные вещи. То же самое с 'sll'. –
Обратите внимание, что использование имени, такого как '__SLL_INCLUDED__', в коде, который вы пишете, не является хорошей идеей. Все имена, начинающиеся с двойного подчеркивания, или подчеркивание и заглавная буква, зарезервированы для использования. Вы видите такие имена в заголовках системы, потому что они являются частью реализации, и разработчики должны использовать такие имена, чтобы не топтать пространство имен, зарезервированное для пользователей; вы должны отвечать взаимностью и не топтать пространство имен, зарезервированное для системы. –