我正在定义一个自定义typedef元素,如下所示....
typedef enum {
Ar,
Cl,
F,
He,
H,
Kr,
Ne,
N,
O,
Rn,
Xe
} Element;
我想检查一个Element类型的变量尚未设置(基本上只检查一个NULL值)。据我所知,唯一的方法是添加额外的行
.... {
unknown = 0,
Ar,
F,
...etc
我是对的还是有更优雅的方式来做到这一点?
答案 0 :(得分:22)
是的,您应该包含“未知”值。基本上enum
只是int
。如果未在声明中定义任何常量(如第一个代码示例中所示),则第一个选项将设置为0
和默认值。
另一种方法是将第一个选项设置为1
。这样就不会定义值0
,您可以手动检查它。
typedef enum {
Ar = 1,
Cl,
F,
He,
H,
Kr,
Ne,
N,
O,
Rn,
Xe
} Element;
if (myElement) { // same as if (myElement != 0)
// Defined
} else {
// Undefined
}
但我会选择明确定义的“未知”值。