wie weisen Sie einen Wert zu einem enum in C?
Ich habe eine enum
und ein struct
wie folgt definiert:
typedef enum
{
MONDAY = 1,
TUESDAY,
WEDNESDAY
} ThreeDays;
typedef struct
{
int hello;
ThreeDays day;
} Weekday;
static Weekday weekday = { 1, 2};
Dann bekam ich die folgende Fehlermeldung in lint:
Error 64: Type mismatch (initialization) (int/enum)
Was ist der Grund dieses Fehlers? Wie kann ich es korrigieren?
- Haben Sie versucht
static Weekday weekday = {1, MONDAY};
? - Ich habe diese Warnung in c, nicht in c++, und es ist nicht ein Fehler.
- Dann ist dein C-compiler ist der falsche compiler verwenden Sie ?
- Es ist kein compiler, es ist
lint
. - Wissen Sie, warum Sie definiert eine
enum
? - Ich bin bereit, zu hören, dass ist der Grund, warum ich den Fehler gemacht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie Ihre enum für was es gebaut wurde:
Lint beschweren, denn Sie haben ein enum, aber weder übergeben Sie ein symbol aus dem enum noch ein cast von einem kompatiblen Typ (wie
(ThreeDays)2
).Verwendung der enum-Symbole wortwörtlich zu vermeiden, diese Warnung von Lint.
Ab, was ich verwendet, enum, die Sie nicht wirklich wollen, zu tun, was Sie versuchen. Der springende Punkt, der es wirklich ist, um es zu betrachten als eine Art. Vom Typ, den ich meine, einen, um einige der Werte werden nur dargestellt, wobei der Wert des ints. Ints sind nur einfacher Weg, zu sagen, die verschiedenen Arten auseinander.
Zum Beispiel könnten Sie verwenden Sie Sie für die Tage, die Wochen
In der Regel, wenn ich es verwenden es, um den Namen des structs bin ich mit in der es sich um eine Sammlung von Knoten, so kann ich unterscheiden zwischen meinem Knoten.
Einstellung Ihrer enum zu bestimmten Nummern irgendwie Niederlagen der Zweck. Für das, was es scheint, Sie wollen eine Letzte variable, weil Sie wollen, finden Sie es, Wann immer Sie wollen. So einfach erstellen Sie eine endgültige int zu bekommen, dass der Wert, wenn überhaupt.
Nutzung textliche Benennung anstelle der Numerik :
Weekday
hat einen ersten Feld namenshello
was ist einint
, nicht enum.Deine Rechtschreibung für enum ist falsch im code.
typedef enum
{
MONDAY = 1,
TUESDAY,
WENDESDAY
}three;
arbeiten 🙂