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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.