LCD Menü "error: conflicting types" / "incompatible pointer type"

OP #3153488
Lesenswert?

Hallo,

ich versuche gerade ein LCD Menü nach der Vorlage hier zu realisieren...
Beitrag "Re: LCD Menü"

Hier mal der relevante Code:
1
typedef struct MENU {
2
  const uint8_t *text;
3
  struct MENU *parent;
4
  struct MENU *child;
5
  void ( *fp )( void );
6
} MENU_ENTRY;
7

8
struct MENU *menu = menu_0; // Zeile 3
9
// menu = menu_1; funktioniert nicht (siehe Fehler)
10

11
static uint8_t item = 0;
12

13
const uint8_t menu0_item1_string[] = "M0 M1";  
14
const uint8_t menu0_item2_string[] = "M0 M2";
15

16
const uint8_t menu1_item1_string[] = "M1 E1";  
17
const uint8_t menu1_item2_string[] = "M1 E2";
18
const uint8_t menu1_item3_string[] = "M1 E3";
19

20
const MENU_ENTRY menu_0[] = {      
21
  { menu0_item1_string, 0, menu_1, 0 }, 
22
  { menu0_item2_string, 0, menu_2, 0 }
23
};
24

25
const MENU_ENTRY menu_1[] = {      
26
  { menu1_item1_string, menu_0, 0, 0 },
27
  { menu1_item2_string, menu_0, 0, 0 },
28
  { menu1_item3_string, menu_0, 0, 0 }
29
};
30
void print_menu(void){
31
  
32
  lcd_clear();
33
  lcd_string(menu[item].text);
34
  lcd_setcursor(0,1);
35
  //lcd_string(*menu[item+1].text);
36
  
37
}

Außer ein paar Warnungen wird das ganze kompiliert und der Menüeintrag 
wird auch ausgegeben.

Versuche ich aber den Pointer mit "menu = menu_1" zu ändern, erhalte ich 
den folgenden Fehler:
1
menu.c:4:1: warning: data definition has no type or storage class [enabled by default]
2
menu.c:4:1: warning: type defaults to 'int' in declaration of 'menu' [enabled by default]
3
menu.c:4:1: error: conflicting types for 'menu'
4
menu.c:3:14: note: previous definition of 'menu' was here
5
menu.c:4:8: warning: initialization makes integer from pointer without a cast [enabled by default]
6

7
menu.c: In function 'print_menu':
8
menu.c:39:17: error: subscripted value is neither array nor pointer nor vector

Was mache ich denn falsch? :-(
Danke schonmal!
OP #3153499
Lesenswert?

Danke für die flotte Antwort :)

Das ist bereits in der Headerdatei passiert.
1
typedef struct MENU {
2
  const uint8_t *text;
3
  struct MENU *parent;
4
  struct MENU *child;
5
  void ( *fp )( void );
6
} MENU_ENTRY;
7

8

9
typedef void (*function) (void);
10

11
const MENU_ENTRY menu_0[];
12
const MENU_ENTRY menu_1[];
13
const MENU_ENTRY menu_2[];
14

15
//void io_conf(uint8_t *DDR, uint8_t *P[], uint8_t direction);
16
void print_menu(void);

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