|
WinAVR(Ну или C) + Массивы в структуре, Массивы в структуре. |
|
|
|
Jul 30 2007, 11:33
|

Местный
  
Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021

|
При таком определении компилятор ругается: Код typedef struct { const char Engl[]; const char Russ[]; } LangStruct PROGMEM; Мол переменной длинны, массив не в конце. Собственно вопрос, а возможно ли вообще в С размещать таким образом два массива?
|
|
|
|
|
 |
Ответов
|
Jul 30 2007, 12:19
|

Местный
  
Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021

|
Цитата ИМХО это очччень не хорошо, если это на самом деле работает. Ни когда не известно, какого размера структура Ну почему не известно, длинна всех типов в структуре, плюс длинна массива, полученная при инициализации, так получается. Кстати именно поэтому видимо и требование такое, что бы массив был в конце структуры, вот два и не получится разместить  . Код В определении типа не нужно указывать атрибутов (PROGMEM), они указываются при обьявлении переменных этого типа : Ну почему же не нужно, смотря для чего, в данном случае надо что бы всё было во флеш, зачем же тогда по сто раз PROGMEM писать.
Сообщение отредактировал Quasar - Jul 30 2007, 12:20
|
|
|
|
|
Jul 30 2007, 12:51
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(Quasar @ Jul 30 2007, 20:19)  Ну почему не известно, длинна всех типов в структуре, плюс длинна массива, полученная при инициализации, так получается. Кстати именно поэтому видимо и требование такое, что бы массив был в конце структуры, вот два и не получится разместить  . Хм... Я, конечно, не знаю, как Вы там в программе работаете с этими структурами, но как, допустим, определить массив Ваших структур??? И как, допустим, в цикле их перебирать если все структуры разной длины??? Кстати, можете показать код инициализации члена Text[] структуры Menu_Item? Что то у меня не получилось
--------------------
|
|
|
|
|
Jul 30 2007, 13:03
|

Местный
  
Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021

|
Цитата(prottoss @ Jul 30 2007, 16:51)  И как, допустим, в цикле их перебирать если все структуры разной длины??? Да, с перебором в цикле - проблема  . Но как Вы могли догадаться, в массиве Text[] храниться текст  , и вообщем-то данный приём только для текста-то и полезен, ибо в цикле чаще всего стоит условие while ( '\0' != Text[i++]) то есть перебираем весь массив, допустим для печати. Ну а в плане инициализации то: Код typedef struct { void *Next; void *Previous; void *Parent; void *Sibling; FuncPtr SelectFunc; FuncPtr EnterFunc; const char Text[]; } Menu_Item PROGMEM;
Menu_Item MyStruct = {(void*)&SomePtr, (void*)&SomePtr, (void*)&SomePtr, (void*)&SomePtr, (FuncPtr)SomeFnc, (FuncPtr)SomeFnc, { "SomeTEXT" }}; Ну а полный код взят собственно здесь: http://electronix.ru/forum/index.php?act=A...st&id=10450
|
|
|
|
Сообщений в этой теме
Quasar WinAVR(Ну или C) + Массивы в структуре Jul 30 2007, 11:33 prottoss Цитата(Quasar @ Jul 30 2007, 19:33) При т... Jul 30 2007, 11:43 Quasar Цитата(prottoss @ Jul 30 2007, 15:43) Нет... Jul 30 2007, 11:48 prottoss Можно сделать немного по другому, если Вы не знает... Jul 30 2007, 11:53 Quasar Цитата(prottoss @ Jul 30 2007, 15:53) Мож... Jul 30 2007, 12:00  prottoss Цитата(Quasar @ Jul 30 2007, 20:00) А ни ... Jul 30 2007, 12:04 umup В определении типа не нужно указывать атрибутов (P... Jul 30 2007, 12:06  ReAl Цитата(prottoss @ Jul 30 2007, 14:51) Хм.... Jul 30 2007, 14:21   prottoss Цитата(ReAl @ Jul 30 2007, 22:20) [code]t... Jul 30 2007, 14:24    zltigo Цитата(prottoss @ Jul 30 2007, 17:24) И И... Jul 30 2007, 17:04     Quasar Цитата(zltigo @ Jul 30 2007, 21:04) И не... Jul 30 2007, 18:53     singlskv Цитата(zltigo @ Jul 30 2007, 21:04) И не... Jul 30 2007, 19:38     Сергей Борщ Цитата(zltigo @ Jul 30 2007, 20:04) И не... Jul 31 2007, 08:39      zltigo Цитата(Сергей Борщ @ Jul 31 2007, 11:39) ... Jul 31 2007, 13:52       ReAl Цитата(zltigo @ Jul 31 2007, 15:52) Речь ... Jul 31 2007, 15:11        Maddy Цитата(ReAl @ Jul 31 2007, 19:11) Мммм...... Jul 31 2007, 20:01         ReAl Цитата(Maddy @ Jul 31 2007, 22:01) Это по... Jul 31 2007, 20:24          Maddy Цитата(ReAl @ Aug 1 2007, 00:24) Что-то я... Aug 1 2007, 09:18  SasaVitebsk Цитата(prottoss @ Jul 30 2007, 15:51) Хм.... Jul 30 2007, 19:01 SasaVitebsk А чего Вы расстраиваетесь. Напишите свою инициализ... Jul 31 2007, 17:25 sensor_ua Цитатавведён размер в начале. К неполным массивам ... Aug 1 2007, 04:55 Kirill Frolov Цитата(Quasar @ Jul 30 2007, 15:33) При т... Aug 7 2007, 00:02
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|