-1
我正在为一个小型arduino项目编写16x2 LCD的菜单。 我差不多完成了,但我不明白最后一个小问题。Arduino在使用引用另一个struct中的struct时编译错误
以下(简化的)码产生问题:
sketch_feb08a.ino:24:53: error: cannot convert 'Select_Item* (*)[2]' to 'Select_Item*' in initialization
在我是从变量和节目访问值的代码:
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 };
它与以下错误结束它在显示器中,一旦编辑,我可以把它写回变量。只要我只有数字来显示/编辑,那不是问题。 现在为了方便使用,我想添加一些选项菜单,用户可以从选项中进行选择。应该显示item_name而不是原始值,但当然应该在场景后面使用item_value。 这就是为什么我引入了Select_Item结构。
我不明白错误消息。这里有什么问题?
错误很明显。 '&sel_list'是一个指向数组的指针,或者'Select_Item *(*)[2]'。而'Menu_Item :: list'是指向'Select_Item'或'Select_Item *'的指针。 – 2015-02-08 18:22:32
你能提出一个可编译的替代方案吗? – 2015-02-08 18:56:40
真的不清楚你在做什么...... – 2015-02-08 18:59:20