在多个.h文件中使用typedef结构

时间:2011-11-10 03:55:19

标签: c header struct typedef

我在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 个答案:

答案 0 :(得分:5)

您忘了将header guards放入.h

由于守卫不在场,因此两次看到相同的定义,并认为你正在重新定义结构。