Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2011, 10:51   #1
abdank
Новичок
Джуниор
 
Регистрация: 24.10.2011
Сообщений: 2
По умолчанию Язык С: доступ к неоднородным структурам

Доброго времени суток, господа. Имеется задача - организовать модификацию параметров микроконтроллерной системы через меню.
Описание параметров организовано в виде структур. Однако, параметры разнообразны, способы их модификации тоже, соответственно структуры-описатели получаются неоднородными. Например, весьмо упрощенно, так:
Код:
  struct descript_1 {            //структура - описатель параметра первого типа
    
  struct desc_flag config;      //битовая структура с информацией для обработчика о содержимом структуры - описателя
  
  char *desc_list;              //текст для главной страницы меню
  
  float define_float;           //начальное значение параметра
  float step_float;             //шаг изменения параметра
  float min_float;              //минимальное значение парамертра
  float max_float;              //максимальное значение
  float *buff_float;            //указатель на рабочий буфер параметра
  void (*fun_in)(void);         //указатель на функцию входа (что нужно выполнить при входе в модификацию)
  void (*fun_mod)(void);        //указатель на функцию - что нужно выполнить при модификации
  void (*fun_out)(void);        //указатель на функцию выхода (что нужно выполнить при выходе в модификации)
  };

  struct descript_2 {            //структура - описатель параметра второго типа
    
  struct desc_flag config;      //битовая структура с информацией для обработчика о содержимом структуры - описателя
  
  char *desc_list;              //текст для главной страницы меню
  
  char define_char;           //начальное значение параметра
  char step_char;             //шаг изменения параметра
  char min_char;              //минимальное значение парамертра
  char max_char;              //максимальное значение
  char *buff_char;            //указатель на рабочий буфер параметра
  };
и т.д.

Имеются ли идеи как организовать доступ к описателям без использования их имен, например, через указатели, по индексу ?

Скажу заранее, что вырывнивание структур при помощи union - случай крайний. Жрет память, а ресурс ограничен.
abdank вне форума Ответить с цитированием
Старый 24.10.2011, 12:02   #2
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от abdank Посмотреть сообщение
Скажу заранее, что вырывнивание структур при помощи union - случай крайний. Жрет память, а ресурс ограничен.
При union память для переменных будет одна и та же, ничего кушаться не будет.
An1ka вне форума Ответить с цитированием
Старый 24.10.2011, 12:36   #3
abdank
Новичок
Джуниор
 
Регистрация: 24.10.2011
Сообщений: 2
По умолчанию

Цитата:
Сообщение от An1ka Посмотреть сообщение
При union память для переменных будет одна и та же, ничего кушаться не будет.
Если сделать вот так:
Код:
 union                         //значение по умолчанию
  {
    char define_char;
    float define_float;
  }define_opt;
то резервируется память для элемента наибольшей длины.
т.е. всегда 4 байта (под float). А если элемент типа char - 1 байт, то остальное - дырка. Так ведь ?

Последний раз редактировалось abdank; 24.10.2011 в 12:45.
abdank вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по файлам и структурам. OrdeR Общие вопросы C/C++ 0 18.06.2011 22:47
C++ Лаба по структурам imelya Помощь студентам 1 28.05.2011 22:16
Литература по структурам novak3 Обсуждение статей 1 20.05.2011 18:52
Доступ к функциям и структурам из потока MAIN_ELF Общие вопросы C/C++ 2 04.10.2010 15:08
Задачи по циклическим структурам и одномерному масиву (язык Си) maloy-rom Помощь студентам 12 24.04.2009 21:59