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++中的规则不同)