在 c 和 c++enum
中都可以用标签定义
enum e_smth {
smth_one,
smth_two,
smth_err
};
或无标签
enum {
smth_one,
smth_two,
smth_err
};
switch
如果它是用标记定义的,那么在 c 和 c++ 中的语句中都是有意义的:
e_smth some_var;
....//do some stuff with some_var
switch (some_var)
{
case smth_one:
break;
case smth_two:
break;
}
-Wswitch
如果这将使用 gcc 或 g++ 编译, 将产生 警告。
在 c++ 中的函数声明和变量初始化中是有意义的:
e_smth var;
var=99;
如果使用 g++ 编译会产生-fpermissive
错误。
带标签或不带标签的两种类型都可以用作一个#define
不带参数的文件宏。
更新
可以作为一个文件
#define
宏使用,不带参数
意思是:而不是#define MAX 1000
在文件中写入并将 MAX 添加到enum { MAX=1000 }
仅在文件范围内的全局使用中
那么匿名枚举呢,我只发现了一个用例:定义就像typedef enum { a,b,c } some_t;
使它像带有标签的枚举一样工作
问题:
如果我还没有描述所有合理的用例,应该使用什么匿名枚举?