Указатель на необъявленную структуру (первое использование в этой функции)

Я пытаюсь реализовать связанный список на C, и мне трудно понять, почему при компиляции я получаю следующую ошибку:

entryList.c:7:11: error: 'tmp' undeclared (first use in this function)
   entry * tmp = NULL;
entryList.c:7:11: note: each undeclared identifier is reported only once for
   each function it appears in
       ^

Я уже написал несколько связанных списков для этой программы, все они используют схожий синтаксис, но компилятор жалуется только на этот.

У меня есть определение структуры в header.h:

/*definition of entry type*/
typedef struct entry
{
  char * label;
  short int address;
  struct entry * next;
} entry;

и в entryList.c я пишу функцию для добавления узла в связанный список.

#include "header.h"

static entry * head = NULL;

void addEntry(char * entry, int line)
{
  entry * tmp = NULL;
  char * label = NULL;
  tmp = malloc(sizeof(entry));
  label = malloc(sizeof(char)*MAX_LINE);
  strcpy(tmp->label, entry);
  tmp->address = 0;
  tmp->next = NULL;

  if (!head)
  {
    head = tmp;
  }
  else
  {
    entry * p = head;
    while (p->next)
      p = p->next;
    p->next = tmp;
  }
}

person fishamit    schedule 12.03.2017    source источник


Ответы (1)


void addEntry(char * entry, int line)
{
    entry * tmp = NULL;

У вас есть и параметр, и тип с именем entry. Измените один из них на что-то другое.

person Crowman    schedule 12.03.2017