Hi,
ich möchte in C eine Enumeration in ein Array schreiben, aber nicht von
Hand, sondern direkt. Ist das möglich?
Es handelt sich um Ansi-C (für µC). Ich möchte damit eine State-Machine
realisieren. In einer Tabelle welche im Codespeicher steht, soll der
Inhalt der Enumeration hinterlegt sein, der Inhalt jedes Feldes
entspricht dem Index + 1. Damit kann man bequem auf den nächsten Zustand
springen.
Beispiel:
1 | enum STATES = {STATE1 = 1, STATE2, STATE3, STATE4, STATE0 = 0};
|
2 |
|
3 | unsigned char code ucStates[] = STATES; //Tabelle im Programmspeicher (Pseudo-Code!!!)
|
4 |
|
5 | unsigned char ucActualState = STATE0; //Zustandsvariable
|
Der Wechsel der Zustände könnte dann in etwa so realisiert werden:
1 | #define NEXT_STATE (ucActualState = ucStates[ucActualState]);
|
Es handelt sich hier nur um ein Beispiel, mir gehts nur darum, ob so
etwas in C möglich ist. Im Prinzip will ich damit nur umgehen, dass man
an zwei Stellen (enum und Tabelle) ändern muss, wenn man einen
zusätzlichen Zustand einfügen will.
Ralf