C 枚举类型不可用

C 枚举类型不可用,c,enums,typedef,c99,C,Enums,Typedef,C99,我的枚举类型有问题。我的标题中有以下内容: enum map_type_t{ MAP_TYPE_PORT, MAP_TYPE_VLAN, MAP_TYPE_L2MAC, MAC_TYPE_VPWS, MAC_TYPE_BFD, MAC_TYPE_VPLS }; 我在我的C文件中包含了标题,这就是eherre。我有一个类似int-store\u-to\u-flash(map\u-type\u-map\u-type,void*pData)的原型。但是

我的枚举类型有问题。我的标题中有以下内容:

enum map_type_t{
    MAP_TYPE_PORT,
    MAP_TYPE_VLAN,
    MAP_TYPE_L2MAC,
    MAC_TYPE_VPWS,
    MAC_TYPE_BFD,
    MAC_TYPE_VPLS
};
我在我的
C
文件中包含了标题,这就是eherre。我有一个类似
int-store\u-to\u-flash(map\u-type\u-map\u-type,void*pData)的原型。
但是现在,由于某种原因,类型
map\u-type\u-t
没有被识别,为什么我不知道呢?我还尝试改为键入枚举定义,但也无法使其正常工作,它看起来像:

typedef enum {
    MAP_TYPE_PORT,
    MAP_TYPE_VLAN,
    MAP_TYPE_L2MAC,
    MAC_TYPE_VPWS,
    MAC_TYPE_BFD,
    MAC_TYPE_VPLS
}map_type_t;
有什么问题,我不明白

PS:这是在
diab
编译器处于
C99
模式下进行的

编辑1

有趣,如果我搬家的话

typedef enum map_type_e {
    MAP_TYPE_PORT,
    MAP_TYPE_VLAN,
    MAP_TYPE_L2MAC,
    MAC_TYPE_VPWS,
    MAC_TYPE_BFD,
    MAC_TYPE_VPLS
}map_type_t;
从我的头文件到顶部的C文件,在我的
include
s之后,它似乎工作得很好。。。这很奇怪,不是吗?知道为什么吗?

声明

enum map_type_t { /* ... */ };
创建名为
枚举映射类型\u t
的类型。标识符
map\u type\t
是一个标记,而不是类型名

您可以使用
typedef
为该类型创建别名,也可以通过其名称
enum map\u type\t
对其进行引用。(您问题中的
typedef
应该已经起作用了;我们需要看到更多的代码才能知道为什么它对您不起作用。)

类似的规则适用于
struct
union
类型声明

(C++中的规则不同)