2013-01-13 59 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