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