Estoy usando MPLAB X IDE con el compilador XC8 y me gustaría crear un sistema de menús para un módulo GLCD, pero tengo problemas para inicializar mi MainMenuItemsList[]
matriz. No recibo un error al compilar, pero si estoy depurando el proyecto, puedo ver que solo se inicializa el primer elemento. ¿Cuál puede ser la causa?
Aquí está el fragmento de código relevante:
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};
cuando define, MenuItem *Items[12];
está creando una matriz de direcciones, no una dirección para una matriz de estructuras (que es lo que desea).
quita el "[12]":
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); ... }
de la función:drawMenu(&MainMenu, 0);
Lo siento, pero no sé cómo formatear correctamente el bloque de código, pero lo intenté varias veces.John