2012-09-26 4 views
8

ich eine benutzerdefinierte typedef Elements bin definieren wie folgt ....Definieren Sie eine „Unbekannt“ oder „NULL“ Wert in einer Enum

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

Ich möchte eine Variable vom Typ prüfen, hat Element nicht gesetzt worden ist (im Wesentlichen nur nach einem Nullwert suchen). Soweit ich der einzige Weg, dies zu tun, sagen kann, ist eine zusätzliche Zeile

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

Bin ich richtig hinzuzufügen, oder ist es eine elegantere Möglichkeit, dies zu tun?

+0

Ich glaube, die Konvention soll einen "unbekannten" Wert haben – nielsbot

+0

... oder, verwenden Sie keine Enums dafür. Verwenden Sie stattdessen nur NSString-Objekte? – nielsbot

+0

Das ist einfach C btw. – DrummerB

Antwort

20

Ja, Sie sollten einen "unbekannten" Wert angeben. Grundsätzlich ist ein enum nur ein int. Wenn Sie in den Deklarationen keine Konstanten definieren (wie in Ihrem ersten Codebeispiel), wird die erste Option auf 0 und den Standardwert gesetzt.

Eine Alternative könnte sein, die erste Option auf 1 zu setzen. Auf diese Weise wird der Wert 0 nicht definiert und Sie können manuell nachsehen.

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 
} 

Aber ich würde stattdessen einen explizit definierten "unbekannten" Wert wählen.

Verwandte Themen