[an error occurred while processing this directive]
Не совсем понятна цель. Я так понял, что объявлена глобальная структура setup_data +++
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено qqq 05 октября 2006 г. 09:28
В ответ на: Вопрос по программированию на С. Доступ к переменным разного типа по индексу. отправлено <font color=gray>Vladimir Ljaschko</font> 05 октября 2006 г. 08:49

Не совсем понятна цель. Я так понял, что объявлена глобальная структура setup_data и с помощью функций хочется ограничить доступ к полям структуры (set_field, get_field).
Но в этом случае, при обращении по индексу, всегда есть вероятность влезть в чужое поле.
И еще. Если и так мало времени для сохранения данных при выключении питания, использование функций только увеличит время обработки.
А в принципе можно использовать указателю. Только кроме индекса нужно передавать еще тип поля данных.
На вскидку...
struct {
char a;
short b;
long c;
} setup_data;

enum {
a_idx=0, b_idx=1, c_idx=3};
#define c_type 0
#define s_type 1
#define l_type 2

void set_field (int idx, int type, long data)
{
unsigned char *ptr=&setup_data;
ptr+=idx;
switch (type)
{
case c_type:
*((*char)ptr)=data;
break;
case s_type:
*((*short)ptr)=data;
break;
case l_type:
*((*long)ptr)=data;
break;
}
}

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание