C 包含包含标头时未找到枚举声明

C 包含包含标头时未找到枚举声明,c,c89,C,C89,我有一个在头文件中声明的枚举数类型。我想在包含此头文件的c文件中使用它。但是,在编译时,我得到一个错误,即没有定义枚举数类型。我已尝试将枚举器声明复制到源文件,但出现错误:“嵌套重新定义'enum command_type'” 有人能解释一下如何在我的文件中使用枚举器类型吗? 谢谢大家! 统计员: //command-internals.h enum command_type { AND_COMMAND, // A && B SEQUENCE_

我有一个在头文件中声明的枚举数类型。我想在包含此头文件的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)
...

错误:
错误:未知类型名称“command\u type”
您的原型应为:

enum command_type scan(char *buffer);

因为您没有在枚举声明上添加
typedef

代码编译器无法理解
命令的类型
通常使用
typedef

//头文件

typedef enum {....} command_type;
command_type scan(char *buffer)
/C文件

typedef enum {....} command_type;
command_type scan(char *buffer)

有了这个,你就不必再记得到处添加
enum

是的,就是这样。对不起,我想这是一个相当愚蠢的问题。谢谢你帮助一个新手!