Arreglo del compilador XC8 del problema de inicialización de estructura

3

Estoy usando MPLAB X IDE con el compilador XC8 y me gustaría crear un sistema de menú para un módulo GLCD, pero tengo problemas para inicializar mi matriz MainMenuItemsList[] . No obtengo un error al completar el proceso 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};
    
pregunta John

1 respuesta

2

cuando define MenuItem *Items[12]; está creando una matriz de direcciones, no una dirección a una matriz de estructuras (que es lo que desea).

saca el "[12]":

typedef struct menu
{
  char MenuName[10];
  char NumberItems;
  MenuItem * Items;
}Menu;
    
respondido por el markg

Lea otras preguntas en las etiquetas