использование структуры typedef в нескольких файлах .h - PullRequest
0 голосов
/ 10 ноября 2011

Я делаю алгоритм кодирования Хаффмана в C и попал в проблему здесь.

У меня есть два разных файла .h, которые будут использовать эту структуру:

typedef struct no{
  int qtd;
  char c;
  struct no* esq;
  struct no* dir;
}no;

Итак,Мой arv_huffman.h имеет этот typedef и typedef no** arvHuffman

Мой другой .h, heap.h, включает в себя "arv_huffman.h" и использует typedef no* heap

Оба файла не имеют других реализаций.Когда я пытаюсь скомпилировать, я получаю следующее сообщение:

arv_huffman.h:11: error: redefinition of ‘struct no’
arv_huffman.h:16: error: conflicting types for ‘no’
arv_huffman.h:16: note: previous declaration of ‘no’ was here
arv_huffman.h:18: error: conflicting types for ‘arvoreHuff’
arv_huffman.h:18: note: previous declaration of ‘arvoreHuff’ was here

строк имеют следующий код

arv_huffman.h:11: "typedef struct no{"
arv_huffman.h:16: "}no;"
arv_huffman.h:18: "typedef no** arvoreHuff;"

Что происходит не так и как это исправить.

1 Ответ

5 голосов
/ 10 ноября 2011

Вы забыли поместить охранники заголовка в ваш .h

Поскольку охранников нет, он дважды видит одно и то же определение и думает, что вы переопределяете структуру.

...