2013-01-13 86 views
2

我有一個在頭文件中聲明的枚舉類型。我想在包含這個頭文件的c文件中使用它。但是,編譯時,我得到一個錯誤,枚舉類型沒有定義。我試着將枚舉數聲明覆制到我的源文件,但我得到一個錯誤:「嵌套重新定義'enum command_type'」包含包含頭時未找到枚舉聲明

有人可以解釋如何在我的文件中使用枚舉類型嗎? 謝謝!

枚舉:

//command-internals.h 
enum command_type 
    { 
    AND_COMMAND,   // A && B 
    SEQUENCE_COMMAND, // A ; B 
    OR_COMMAND,   // A || B 
    PIPE_COMMAND,  // A | B 
    SIMPLE_COMMAND,  // a simple command 
    SUBSHELL_COMMAND, // (A) 
    }; 

用法:

//#include "command-internals.h" 
command_type scan(char *buffer) 
... 

錯誤:error: unknown type name ‘command_type’

回答

2

你的原型應閱讀:

enum command_type scan(char *buffer); 

既然你沒」 t在枚舉聲明中放置一個typedef

+0

是的,它做到了。對不起,我猜這是一個非常愚蠢的問題。感謝您幫助新手! – user1174472

1

使用您的代碼編譯器無法理解類型command_type
人們通常會用一個typedef

//頭文件

typedef enum {....} command_type; 

// C文件

command_type scan(char *buffer) 

有了這個,你不必記得保持再次到處添加enum