|
IAR. Динамический размер структуры. Micro Menu. IAR |
|
|
|
Dec 14 2014, 07:45
|
Местный
  
Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709

|
Тут пример Micro Menu. Проект написан для WinAVR (AVR Toolchain). В этом проекте размер структуры зависит от размера текстовой строки. В IAR никак не могу добиться и понять, как мне сделать, чтобы размер структуры зависел от размера текстовой строки. Проект компилируется, только если задать так: Код //======================================================================== typedef struct menu_item { void *Parent; void *Child; void *Next; void *Prev; FuncPtr NumFunc; FuncPtr EnterFunc; FuncPtr MenuFunc; char Text[20]; } menu_item; //======================================================================== Есть ли возможность добиться, чтобы в IAR размер структуры зависел от размера текстовой строки?
|
|
|
|
|
 |
Ответов
|
Dec 14 2014, 12:47
|
Знающий
   
Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390

|
Структура меню же не меняется в процессе работы? Может тогда проще __flash сразу ко всем menu_item? Код menu_item __flash submenu1[] = { { .Parent=&main[0], Child=&submenu2[0], .Next=&submenu1[1], .Prev=&submenu1[0], ..., .Text="Submenu1" }, ... } menu_item __flash main[] = { { .Parent=&main[0], Child=&submenu1[0], .Next=&main[0], .Prev=&main[0], ..., .Text="Main" } }
|
|
|
|
|
Dec 14 2014, 18:30
|
Местный
  
Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709

|
Цитата(psL @ Dec 14 2014, 18:47)  ... Что-то как-то сложно у вас... Код MAKE_MENU (L_OUT_MODE, NULL_ENTRY, L1_I1_TEMP, NULL_ENTRY, NULL_ENTRY, show_service_menu, out_mode_init, NULL_FUNC, "ПАРАМЕТРЫ"); MAKE_MENU (L1_I1_TEMP, L_OUT_MODE, L2_I1_TEMP, L1_I2_TIME, NULL_ENTRY, NULL_FUNC, menu_parameters_init, NULL_FUNC, "ТЕМПЕРАТУРА"); MAKE_MENU (L1_I2_TIME, L_OUT_MODE, TIME_I1_COOLING, L1_I3_SPEED, L1_I1_TEMP, NULL_FUNC, menu_parameters_init, NULL_FUNC, "ТАЙМЕРЫ"); MAKE_MENU (L1_I3_SPEED, L_OUT_MODE, SPEED_I1_CLOSE, L1_I4_PRESSURE, L1_I2_TIME, NULL_FUNC, menu_parameters_init, NULL_FUNC, "СКОРОСТЬ");
Сообщение отредактировал demiurg1978 - Dec 14 2014, 18:38
|
|
|
|
|
Dec 14 2014, 20:30
|
Знающий
   
Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390

|
Цитата(demiurg1978 @ Dec 14 2014, 21:30)  Что-то как-то сложно у вас... Код MAKE_MENU (... Это пример. А что, макрос MAKE_MENU делает что-то принципиально иное? Просто подумал, что раз меню статически задается, то нет необходимости в двусвязном списке - можно узлы подуровеня в дереве сразу в массиив положить, тогда поля.Next и .Prev будут не нужны.
|
|
|
|
Сообщений в этой теме
demiurg1978 IAR. Динамический размер структуры. Micro Menu. IAR Dec 14 2014, 07:45 Xenia Цитата(demiurg1978 @ Dec 14 2014, 10:45) ... Dec 14 2014, 07:58 demiurg1978 Ксения, благодарю за подсказку! Сделал так:
К... Dec 14 2014, 08:15 scifi Цитата(Xenia @ Dec 14 2014, 10:58) Оригин... Dec 14 2014, 08:22  demiurg1978 Цитата(scifi @ Dec 14 2014, 14:22) Вот та... Dec 14 2014, 08:31   scifi Цитата(demiurg1978 @ Dec 14 2014, 11:31) ... Dec 14 2014, 09:59    Xenia Цитата(scifi @ Dec 14 2014, 12:59) А на н... Dec 14 2014, 10:30     demiurg1978 Цитата(Xenia @ Dec 14 2014, 16:30) Тем не... Dec 14 2014, 10:50      Xenia Цитата(demiurg1978 @ Dec 14 2014, 13:50) ... Dec 14 2014, 11:21      scifi Цитата(demiurg1978 @ Dec 14 2014, 13:50) ... Dec 14 2014, 12:20     scifi Цитата(Xenia @ Dec 14 2014, 13:30) Тем не... Dec 14 2014, 10:59      demiurg1978 Цитата(scifi @ Dec 14 2014, 16:59) ...
Не... Dec 14 2014, 11:32 scifi Чтобы не разбираться, можно просто заменить ... Dec 14 2014, 08:09 Сергей Борщ Иар прекрасно работал с массивами переменной длины... Dec 14 2014, 08:47 demiurg1978 Цитата(Сергей Борщ @ Dec 14 2014, 14:47) ... Dec 14 2014, 08:49 Genadi Zawidowski ЦитатаЧего стоят эти pgm_read_byte, pgm_read_word
... Dec 14 2014, 21:41
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|