Forum: Compiler & IDEs Fehlermeldung Statemachine


von Andi K. (fry12)


Lesenswert?

Hallo Leute!

Zu Testzwecken versuche ich gerade eine kleine Statemachine zu basteln. 
Dabei verwende ich eine Zustandsübergangstabelle, die mit selbst 
definierten Typen und Funktionszeigern arbeitet:
1
typedef void(*action_ptr_t)(void);
2
3
#define NB_STATES  5
4
#define NB_EVENTS  7
5
6
static void action_0(void);
7
static void action_1(void);
8
static void action_2(void);
9
static void action_3(void);
10
static void action_4(void);
11
static void action_5(void);
12
13
typedef enum {
14
  STATE_0,
15
  STATE_1,
16
  STATE_2,
17
  STATE_3,
18
  STATE_4
19
} state_t;
20
21
typedef enum {
22
    NO_EVENT,
23
    EVENT_1,
24
    EVENT_2,
25
    EVENT_3
26
} event_t;
27
28
typedef struct {
29
    state_t      next_state;
30
    action_ptr_t action_to_do;
31
} state_element_t;
32
33
const state_element_t state_table[NB_STATES][NB_EVENTS] = {
34
  { {STATE_2, &action_0}, {STATE_0, &action_1}, {0,0}, {0,0}, {STATE_0, &action_3}, {STATE_3, &action_5}, {STATE_0, &action_1} },
35
  { {STATE_2, &action_0}, {STATE_0, &action_1}, {0,0}, {STATE_3, &action_2}, {STATE_2, &action_0}, {STATE_2, &action_0}, {STATE_2, &action_0} },
36
  { {STATE_2, &action_0}, {STATE_0, &action_1}, {STATE_4, &action_2}, {STATE_3, &action_2}, {STATE_0, &action_3}, {0,0}, {0,0} },
37
  { {STATE_2, &action_0}, {0,0}, {0,0}, {STATE_3, &action_2} {0,0}, {0,0}, {STATE_1, &action_4} },
38
  { {STATE_2, &action_0}, {0,0}, {STATE_4, &action_2}, {0,0}, {0,0}, {0,0}, {STATE_1, &action_4} }
39
}
Allerdings bekomme ich beim Kompilieren eine Fehlermeldung und ich stehe 
gerade ein wenig auf der Leitung, da ich den Ursprung des Fehlers nicht 
ausmachen kann.

error: expected '}' before '{' token

Das Ganze wird für die vierte Zeile der Zustandstabelle angezeigt. Kann 
mir da jemand weiterhelfen? Es muss sich doch um einen rein 
syntaktischen Fehler handeln; ich kann jedoch keinen ausfindig machen.

P.S.: Ja ich weiß, einem Funktionszeiger die Adresse "0x0" zuzuweisen 
ergibt wenig Sinn. Wie gesagt, das Ganze dient nur Testzwecken und daher 
habe ich zum Füllen der Tabelle schnell 0 genommen. Das dürfte kaum 
Auswirkungen haben, oder? Die Statemachine wird so ohnehin nicht 
ausgeführt.

von lalala (Gast)


Lesenswert?

Andi K. schrieb:
> {STATE_3, &action_2} {0,0}

Komma vergessen?

von Andi K. (fry12)


Lesenswert?

Jo das ist es! Dankeschön.

Ich muss blind gewesen sein...

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Und nimm noch ein Semikolon ganz am Ende mit :-)

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.