13

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

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

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

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

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

4

1 回答 1

24

是的,您应该包含一个“未知”值。基本上 anenum只是一个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
}

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

于 2012-09-26T00:47:48.930 回答