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

C 在多个.h文件中使用typedef结构,c,header,struct,typedef,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 这两个文件都没有其他实现。我尝试编译

我正在用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;"
出了什么问题,我该怎么解决。

你忘了输入.h

由于警卫不在场,它两次看到相同的定义,并认为您正在重新定义结构。

您忘了输入.h

由于警卫不在场,它两次看到相同的定义,并认为您正在重新定义结构