Я нахожусь в меню для 16x2 ЖК-дисплея для небольшого проекта arduino. Я почти закончил, но я не понимаю последнюю небольшую проблему.Ошибка компиляции Arduino при использовании ссылки на структуру в другой структуре
В следующем (упрощенный) код создает проблему:
int var1=0;
int var2=0;
typedef struct {
unsigned int item_value;
char item_name[17];
} Select_Item;
typedef struct {
char item_name[17];
int* variable;
Select_Item* list;
} Menu_Item;
Select_Item sel_one = { 0, "Selection 1" };
Select_Item sel_two = { 1, "Selection 2" };
Select_Item* sel_list[2] = { &sel_one, &sel_two };
Menu_Item menu_item1 = { "Item 1", &var1, NULL };
Menu_Item menu_item2 = { "Item 2", &var2, &sel_list };
Menu_Item* menu_list[2] = { &menu_item1, &menu_item2 };
она заканчивается со следующей ошибкой:
sketch_feb08a.ino:24:53: error: cannot convert 'Select_Item* (*)[2]' to 'Select_Item*' in initialization
В коде я доступ значения из переменных и шоу он на дисплее и после редактирования я могу записать его обратно в переменную. Это не проблема, пока у меня были только цифры, чтобы показывать/редактировать. Теперь для удобства использования я хотел добавить какое-то меню опций, где пользователь может выбрать один из вариантов. Имя item_name должно отображаться вместо необработанного значения, но, конечно, значение item_value должно использоваться за сценой. Вот почему я представил структуру Select_Item.
Я не понимаю сообщение об ошибке. Что здесь не так?
Ошибка довольно ясна. '& sel_list' является указателем на массив или' Select_Item * (*) [2] '. В то время как 'Menu_Item :: list' является указателем-' -Select_Item' или 'Select_Item *'. –
Не могли бы вы предложить компилируемую альтернативу? –
Это действительно неясно, что вы пытаетесь сделать ... –