错误C2365:重新定义枚举和错误2086重新定义

问题描述:

我试图制作压缩和解压缩文件的程序。我想为这种类型的操作创建一个枚举类型:typedef enum { COMPRESS, DECOMPRESS } operation;。 问题是,我得到的4个错误:错误C2365:重新定义枚举和错误2086重新定义

Error 1 error C2365: 'COMPRESS' : redefinition; previous definition was 'enumerator' 
Error 2 error C2086: 'COMPRESS' : redefinition 
Error 3 error C2365: 'DECOMPRESS' : redefinition; previous definition was 'enumerator' 
Error 4 error C2086: 'DECOMPRESS' : redefinition 

我不明白什么是错的,因为我做了一个枚举就像是对布尔值,它工作正常:typedef enum { FALSE, TRUE } boolean;

编辑: 我被要求添加整个.h文件中的类型定义是:

#include <stdio.h> 
typedef enum { COMPRESS, DECOMPRESS } operation; 
void compress(FILE * file); 
void compressArchive(FILE * files[]); 
void decompress(FILE * file); 
void decompressArchive(FILE * files[]); 

和N.M.说我做#include "huffman.h"在另一个文件,general.h(这需要operation类型)和huffman.cmain.c

我做错了什么?

谢谢。

+1

看来,令牌'COMPRESS'和'DECOMPRESS'在另一个名为枚举使用'enumerator'。 –

+0

@RSahu我把它改成了一些乱码只是为了检查,但它仍然不起作用,同样的问题(CMPR,DCMPR)。 – shoham

+2

我的魔晶说你有一个包含文件而没有包含守卫。 –

假设的问题.h文件中被称为“huffman.h”,将其更改为以下:

#ifndef __huffman_h__ 
#define __huffman_h__ 


#include <stdio.h> 
typedef enum { COMPRESS, DECOMPRESS } operation; 
void compress(FILE * file); 
void compressArchive(FILE * files[]); 
void decompress(FILE * file); 
void decompressArchive(FILE * files[]); 

#endif /* __huffman_h_ */ 
+0

即使它已经包含警卫,您也会放置#include 。所以我想这没关系。谢谢。 – shoham

+0

#ifndef __huffman_h__,否则你的包含将永远不会被处理。 – Pietro

+1

@Pietro,对我而言很糟糕。谢谢! –