2012-09-26 26 views
8

estoy definiendo una costumbre typedef Elementos de la siguiente manera ....definir un valor o "Desconocido" "NULO" en una enumeración

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

Quiero comprobar una variable de tipo de elemento no se ha establecido (esencialmente solo verifica un valor NULO). Por lo que yo puedo decir la única manera de hacer esto es añadir una línea adicional

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

Estoy en lo cierto o hay una manera más elegante de hacer esto?

+0

Creo que la convención es tener un valor "desconocido" – nielsbot

+0

... o, no use enumeraciones para esto. tal vez solo use objetos NSString en su lugar? – nielsbot

+0

Eso es simple C por cierto. – DrummerB

Respuesta

20

Sí, debe incluir un valor "desconocido". Básicamente, un enum es solo un int. Si no define constantes en las declaraciones (como en el primer ejemplo de código), la primera opción se configurará en 0 y el valor predeterminado.

Una alternativa podría ser establecer la primera opción en 1. De esta forma, no se definirá el valor 0 y puede verificarlo manualmente.

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 
} 

Pero optaría por un valor "desconocido" explícitamente definido en su lugar.

Cuestiones relacionadas