Ich verwende MPLAB X IDE mit XC8-Compiler und möchte ein Menüsystem für ein GLCD-Modul erstellen, aber ich habe Probleme beim Initialisieren meines MainMenuItemsList[]
Arrays. Beim Kompilieren erhalte ich keinen Fehler, aber wenn ich das Projekt debugge, kann ich sehen, dass nur das erste Element initialisiert wird. Was kann die Ursache sein?
Hier ist das relevante Codefragment:
typedef struct menuitem
{
char ItemName[10];
void (*handler)(void);
struct menu *ChildSubMenu;
}MenuItem;
typedef struct menu
{
char MenuName[10];
char NumberItems;
//struct menu *ParentMenu;
MenuItem *Items[12];
}Menu;
MenuItem MainMenuItemsList[12] = { {"SubMenu1", NULL, NULL},
{"SubMenu2", NULL, NULL},
{"SubMenu3", NULL, NULL},
{"SubMenu4", NULL, NULL},
{"SubMenu5", NULL, NULL},
{"SubMenu6", NULL, NULL},
{"SubMenu7", NULL, NULL},
{"SubMenu8", NULL, NULL},
{"SubMenu9", NULL, NULL},
{"SubMenu10", NULL, NULL},
{"SubMenu11", NULL, NULL},
{"SubMenu11", NULL, NULL}
};
Menu MainMenu = {"MainMenu",12,&MainMenuItemsList};
Wenn Sie definieren, MenuItem *Items[12];
erstellen Sie ein Array von Adressen, keine Adresse für ein Array von Strukturen (was Sie wollen).
nimm die "[12]" heraus:
typedef struct menu
{
char MenuName[10];
char NumberItems;
MenuItem * Items;
}Menu;
Bruno Ferreira
John
John
void drawMenu(Menu *menuToShow, unsigned char selectedIndex) { ... glcd_puts(menuToShow->Items[i]->ItemName,8,i+1,0,1,-2); ... }
of die Funktion:drawMenu(&MainMenu, 0);
Entschuldigung, aber ich weiß nicht, wie man den Codeblock richtig formatiert, aber ich habe es mehrmals versucht.John