Fehlermeldung Statemachine

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

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