Цитата(SergSit @ Jun 19 2006, 10:43)

Програмировать в СИ только начинаю, так что если что не правильно сильно не бейте.
В процессе написание проги возникла не обходимость обращаться к элементам структуры через указатели. Предположим есть структура :
eeprom struct flagi_signal
{unsigned char kabina:1;
unsigned char kuzov:1;
unsigned char revun:1;
unsigned char zumer:1;
}fl_sign={1,1,1,1};
Теперь хочу создать массив структур в котором один из элементов должен ссылать на елементы сртукткры fl_sign, причем новая структура должна (если это возможно) храниться во Flash. Моя версия не работает
flash struct set_sign
{flash unsigned char *mas;
eeprom unsigned char *pun;---> елемент который должен ссылать на елемент структуры fl_sign
unsigned int punkt_up;
unsigned int punkt_down;
}signal_set[]={{mes22,fl_sign.kabina,punkt_zumer,punkt_kuzov},
{mes22,fl_sign.kabina,punkt_zumer,punkt_kuzov}};
Прогу пишу в CodeVision. Перепробывал много вариантов, не хватает опыта и глубокого знания СИ.
Может кто сталкивался с такой проблемой?
Лучше (и проще всего) делать так:
Код
typedef struct { // Определить тип данных в виде структуры
unsigned char kabina:1;
unsigned char kuzov:1;
unsigned char revun:1;
unsigned char zumer:1;
}
TSygnalFlags;
Далее, можно опеределить переменные этого типа:
Код
TSygnalFlags flash signal_set[] = {.....}; // Массив в программной flash памяти
TSygnalFlags eeprom signal; // Переменная в EEPROM памяти данных
И, соответственно, указатели на них:
Код
TSygnalFlags flash *sfPtr; // Указатель в ОЗУ, указывает на данные во flash
flash TSygnalFlags flash *ffPtr = signal_set; // Указатель во flash памяти, укзывает на данные во flash
C EEPROM аналогично.