Хорошо, я видел этот вопрос в Google миллион раз, но все еще не увенчался успехом.
Я пытаюсь создать связанный список. Вот структура, определенная в List.c
:
typedef struct List
{
unsigned int size;
ObjectP head;
} List;
Теперь, как вы заметите, и struct, и typedef называются LIST, что, насколько я знаю, хорошо. Но важно то, что структура НЕ анонимна.
Теперь в List.h
(что, конечно, включено в List.c
) я определил еще один typedef:
typedef struct List* ListP;
Что, насколько я понимаю, определяет ListP как указатель на структуру с именем List, точно так же, как я ее назвал.
И вот где я получаю ошибки:
void freeList(ListP list)
{
ObjectP obj1;
ObjectP obj2;
if (list != NULL)
{
obj1 = list->head;
while (obj1->next != NULL) <---- HERE
{
obj2 = obj1;
obj1 = obj1->next; <---- HERE
freeObject(obj2);
}
free(list);
}
}
Я не понимаю, почему obj1 = list->head;
в порядке, но везде я пытаюсь получить доступ к членам структуры, у меня есть эта ошибка.
Как я уже сказал, я пытался найти его, но у других пользователей были ошибки, которые я не могу найти в своем коде. Спасибо!
РЕДАКТИРОВАТЬ: List.c
также включает в себя Object.h
, так что это не проблема. Определение объекта таково:
в Object.h
у меня typedef struct Object* ObjectP
;
а в Object.c
у меня
typedef struct Object
{
void* key;
ObjectP next;
} Object;
Все еще не знаю, в чем проблема!