1110 Stimmen

Was ist ein typedef enum in Objective-C?

Ich glaube nicht, dass ich grundsätzlich verstehe, was ein enum ist, und wann sie zu verwenden ist.

Zum Beispiel:

typedef enum {
    kCircle,
    kRectangle,
    kOblateSpheroid
} ShapeType;

Was wird hier wirklich erklärt?

2 Stimmen

Wird der benutzerdefinierte Typ "enum" genannt? Das hatte ich auch gedacht, bis ich auf Code stieß, der mehrere typedef enum-Deklarationen enthielt.

8 Stimmen

Nein, der benutzerdefinierte Typ ist ShapeType. Informieren Sie sich über typedef : de.wikipedia.org/wiki/Typedef

7 Stimmen

Ein typedef in Objective-C ist genau dasselbe wie ein typedef in C. Und ein enum in Objective-C ist genau dasselbe wie ein enum in C. Dies deklariert ein enum mit drei Konstanten kCircle = 0, kRectangle = 1 und kOblateSpheroid = 2 und gibt dem enum-Typ den Namen ShapeType. Wenn Sie nicht wissen, was "typedef" und "enum" bedeuten, kaufen Sie sich ein Buch über C.

2voto

Ein Typedef erlaubt es dem Programmierer, einen Objective-C-Typ als einen anderen zu definieren. Zum Beispiel,

typedef int Counter; definiert den Typ Counter als äquivalent zum Typ int. Dies verbessert die Lesbarkeit des Codes drastisch.

2voto

Yogeesh H T Punkte 2411

Der Typedef ist ein Schlüsselwort in C und C++. Es wird verwendet, um neue Namen für grundlegende Datentypen zu erstellen (char, int, float, double, struct & enum) .

typedef enum {
    kCircle,
    kRectangle,
    kOblateSpheroid
} ShapeType;

Hier wird ein enumerierter Datentyp erstellt ShapeType & wir können neue Namen für Enum-Typen schreiben ShapeType wie unten angegeben

ShapeType shape1; 
ShapeType shape2; 
ShapeType shape3;

1voto

Marcus Thornton Punkte 5451

Enum kann viele Arten von "Fehlern" reduzieren und den Code überschaubarer machen

#define STATE_GOOD 0
#define STATE_BAD 1
#define STATE_OTHER 2
int STATE = STATE_OTHER

Die Definition hat keine Beschränkungen. Sie ist einfach nur eine Substitution. Sie ist nicht in der Lage, alle Bedingungen des Zustands einzuschränken. Wenn STATE = 5 zugewiesen wird, ist das Programm falsch, weil es keinen passenden Zustand gibt. Aber der Compiler wird nicht vor STATE = 5 warnen.

Es ist also besser, wie folgt zu verfahren

typedef enum SampleState {
    SampleStateGood  = 0,
    SampleStateBad,
    SampleStateOther
} SampleState;

SampleState state = SampleStateGood;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X