C 定义一个;“未知”;或;空";枚举中的值

C 定义一个;“未知”;或;空";枚举中的值,c,enums,null,default,typedef,C,Enums,Null,Default,Typedef,我正在定义一个自定义的typedef元素,如下所示 typedef enum { Ar, Cl, F, He, H, Kr, Ne, N, O, Rn, Xe } Element; 我想检查尚未设置Element类型的变量(基本上只是检查空值)。就我所知,做这件事的唯一方法是增加一行 .... { unknown = 0, Ar, F, ...etc 我是对的还是有更

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

typedef enum  {
    Ar,
    Cl,
    F,
    He,
    H,
    Kr,
    Ne,
    N,
    O,
    Rn,
    Xe
} Element;
我想检查尚未设置Element类型的变量(基本上只是检查空值)。就我所知,做这件事的唯一方法是增加一行

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

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

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

但是我会选择一个显式定义的“未知”值。

我相信约定是有一个“未知”值……或者,不要为此使用枚举。也许只是用NSString对象来代替?哦!没有物体。。。我的脑袋在objective-c土地上。。。尽管如此,我还是可以将
元素
升级为一个结构+一组实用函数。这取决于如何使用
元素