C Verständnisfrage

Gast #3363769
Lesenswert?

definiert ein enum
und darin offensichtlich die Zustände einer Statemachine:
INIT = 0
STANDBY = 1
RUN = 2
PROG = 3
WERKSEINSTELLUNG = 4
CHARGE = 5


ist äquivalent zu
#define INIT 0
#define STANDBY 1
...


enum ist aber die saubere Version, weil sich so die Werte praktisch 
selbst verwalten.

Eineindeutig müssen die Namen dennoch sein, wenn du also irgenwo anders 
noch z.B. ein "#define RUN 5" im Code stehen hast, knallt's.

BTW: besorg dir ein c-Buch, da wird das alles erklärt...
Gast #3363776
Lesenswert?

Thosch schrieb:
> definiert ein enum
> und darin offensichtlich die Zustände einer Statemachine:
> INIT = 0
> STANDBY = 1
> RUN = 2
> PROG = 3
> WERKSEINSTELLUNG = 4
> CHARGE = 5
>
> ist äquivalent zu
> #define INIT 0
> #define STANDBY 1


Verstanden! Vielen Dank! und wieso extern das muss doch nicht sein oder?
Gast #3364050
Lesenswert?

Wieso extern?
Weil nicht nur ein enum definiert wird, sondern auch gleich eine 
Variable e_state bekannt gemacht wird, die aber nicht in dieser 
"Übersetzungseinheit", sondern in einer anderen deklariert ist.
Gast #3364091
Lesenswert?

Bastler schrieb:
> Wieso extern?
> Weil nicht nur ein enum definiert wird, sondern auch gleich eine
> Variable e_state bekannt gemacht wird, die aber nicht in dieser
> "Übersetzungseinheit", sondern in einer anderen deklariert ist.

Wobei es ungeschickt ist, die Inhalt des enums anzuführen.

Ein
extern enum T_STATE e_State;
hätte gereicht.

Ändert sich die Definition des enums, musst du zwei Stellen ändern.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren