Forum: Mikrocontroller und Digitale Elektronik C Verständnisfrage


von neu (Gast)


Lesenswert?

Hallo,

kann einer das versuchen zu erklären:

extern enum T_STATE { INIT, STANDBY, RUN, PROG, WERKSEINSTELLUNG, CHARGE 
} e_State;

von Dennis (Gast)


Lesenswert?

http://home.fhtw-berlin.de/~junghans/cref/SYNTAX/enum.html

Fortgeschrittene Programmierer können auch G**gle benutzen...

von Cyblord -. (cyblord)


Lesenswert?


von Thosch (Gast)


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...

von neu (Gast)


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?

von Cyblord -. (cyblord)


Lesenswert?

Sollen wir dir jetzt auch noch das Schlüsselwort "extern" googeln oder 
machst du das diesmal selber?

von Frank M. (frank_m35)


Lesenswert?

neu schrieb:
> Verstanden! Vielen Dank! und wieso extern das muss doch nicht sein oder?

Beitrag "Re: Den Befehl extern"

von Bastler (Gast)


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.

von Jodeldiplomand (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.