Определите значение "Unknown" или "NULL" в перечислении


Я определение пользовательского элемента состоит в следующем....

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

Я хочу проверить, что переменная типа Element не была установлена (по существу, просто проверьте значение NULL). Насколько я могу судить, единственный способ сделать это-добавить дополнительную строку

.... {
      unknown = 0,
      Ar,
      F,
...etc
Прав ли я или есть более элегантный способ сделать это?
1 9

1 ответ:

Да, вы должны включить" неизвестное " значение. В сущности, 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
}

Но вместо этого я бы выбрал явно определенное" неизвестное " значение.