[an error occurred while processing this directive]
|
Не совсем понятна цель. Я так понял, что объявлена глобальная структура 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;
}
}