在枚举中定义“未知”或“NULL”值

时间:2012-09-26 00:41:22

标签: c enums null default typedef

我正在定义一个自定义typedef元素,如下所示....

typedef enum  {
    Ar,
    Cl,
    F,
    He,
    H,
    Kr,
    Ne,
    N,
    O,
    Rn,
    Xe
} Element;

我想检查一个Element类型的变量尚未设置(基本上只检查一个NULL值)。据我所知,唯一的方法是添加额外的行

.... {
      unknown = 0,
      Ar,
      F,
...etc

我是对的还是有更优雅的方式来做到这一点?

1 个答案:

答案 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
}

但我会选择明确定义的“未知”值。