包含标题时未找到枚举声明

时间:2013-01-13 05:56:39

标签: c c89

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

答案 0 :(得分:2)

你的原型应该是:

enum command_type scan(char *buffer);

因为你没有在枚举声明中加上typedef

答案 1 :(得分:1)

您的代码编译器无法理解command_type类型是什么。
一个人通常会使用typedef

//页眉文件

typedef enum {....} command_type;

// C档案

command_type scan(char *buffer)

通过此功能,您无需记得再次在任何地方添加enum