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!