2014-06-16 83 views
3

我試圖製作壓縮和解壓縮文件的程序。我想爲這種類型的操作創建一個枚舉類型: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

我的魔晶說你有一個包含文件而沒有包含守衛。 –

回答

1

假設的問題.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,對我而言很糟糕。謝謝! –