C语言中结构中的灵活结构数组

C语言中结构中的灵活结构数组,c,C,正如在标题中所写,我可能在结构上遇到灵活数组的问题。 我只是想把指针从const菜单移到另一个菜单。我想从当前菜单中提取一些数据并发送出去: static void DoMainMenuAction(void); /* Type */ typedef enum _LCD_ItemType { E_LCD_ITEM_TYPE_BOOL, E_LCD_ITEM_TYPE_EXPANDABLE, E_LCD_ITEM_T

正如在标题中所写,我可能在结构上遇到灵活数组的问题。 我只是想把指针从const菜单移到另一个菜单。我想从当前菜单中提取一些数据并发送出去:

    static void DoMainMenuAction(void);

    /* Type */
    typedef enum _LCD_ItemType
    {
        E_LCD_ITEM_TYPE_BOOL,
        E_LCD_ITEM_TYPE_EXPANDABLE,
        E_LCD_ITEM_TYPE_ACTION      
    }e_LCD_ItemType;

    /* Menu Item */
    typedef struct _LCD_MenuItem
    {
        char*           Name;
        e_LCD_ItemType  Type;
    }s_LCD_MenuItem;

    /* Menu structure */
    typedef struct _NAV_Menu
    {
        const char*             Header;     /* Title */
        const uint8_t           NbItems;    /* Number of choices in the menu */
        void (*callbackFnct)(void);         /* Selected item function */
        const s_LCD_MenuItem*   Items[];    /* Menu array of Items */
    } s_NAV_Menu; 

    /* Main Menu */
    static const s_LCD_MenuItem NAV_MainMenuItems[] = {
        { "<< Back",            E_LCD_ITEM_TYPE_ACTION      },
        { "General Settings",   E_LCD_ITEM_TYPE_EXPANDABLE  },
        { "About",              E_LCD_ITEM_TYPE_ACTION      }
    };
    static const s_NAV_Menu NAV_MainMenu = {
       "Menu",
        3,
        &DoMainMenuAction,
        (s_LCD_MenuItem*)&NAV_MainMenuItems
    };

    /* Pointer of current menu */
    static s_NAV_Menu* pCurrentMenu;

    static void NAV_LcdDisplay()
    {    
        uint8_t indexItem = 0;

        /* Move to the Main Menu */             
        pCurrentMenu = (s_NAV_Menu*)&NAV_MainMenu;

        s_LCD_MenuItem NAV_LCD_MenuItems[pCurrentMenu->NbItems];

        for ( indexItem = 0; indexItem < pCurrentMenu->NbItems; indexItem++ )
        {
            NAV_LCD_MenuItems[indexItem].Name = pCurrentMenu->Items[indexItem]->Name;
            NAV_LCD_MenuItems[indexItem].Type = pCurrentMenu->Items[indexItem]->Type;       
        }

        LCD_Send(NAV_LCD_MenuItems);
    }
静态void域操作(void);
/*类型*/
typedef枚举_LCD_ItemType
{
E_LCD_项目_类型_布尔,
E\u LCD\u项目\u类型\u可扩展,
E\u LCD\u项目\u类型\u动作
}e_LCD_ItemType;
/*菜单项*/
类型定义结构\u LCD\u菜单项
{
字符*名称;
e_LCD_ItemType;
}s_LCD_菜单项;
/*菜单结构*/
typedef结构导航菜单
{
常量字符*标题;/*标题*/
const uint8\u t NbItems;/*菜单中的选项数*/
void(*callbacknct)(void);/*所选项函数*/
常量s_LCD_菜单项*项[];/*项的菜单数组*/
}导航菜单;
/*主菜单*/
静态常数s_LCD_菜单项导航_主菜单项[]={
{ "
Items
是类型为
s\u LCD\u MenuItem
的指针数组

也许您需要指向类型为
s\u LCD\u MenuItem
的数组的指针

typedef struct _NAV_Menu
{
    const char*             Header;     /* Title */
    const uint8_t           NbItems;    /* Number of choices in the menu */
    void (*callbackFnct)(void);         /* Selected item function */
    const s_LCD_MenuItem*   Items;    /* Menu array of Items */
} s_NAV_Menu; 

您的
pccurrentmenue;
指向何处?以及在何处/如何分配内存。发布a。是的,我的坏、编辑过的
NAV\u mainuitems
不是指针数组。
typedef struct _NAV_Menu
{
    const char*             Header;     /* Title */
    const uint8_t           NbItems;    /* Number of choices in the menu */
    void (*callbackFnct)(void);         /* Selected item function */
    const s_LCD_MenuItem*   Items;    /* Menu array of Items */
} s_NAV_Menu;