Кольцевой список

Строю меню. Нужно перемещаться по пунктам туда-обратно и по кольцу, т.е. нужно реализовать простой двусвязный список. Но поместить его во flash не получается :( Имеется такой кусок кода (IAR C++ 2.28):

struct Item { Item __flash * Next; Item __flash * Prev; void (*fun)(char); };

void f1(char K); void f2(char K); void f3(char K);

__flash Item It1 = {&It2,&It3,f1}; // Здесь компилятор не находит It2 и It3 и ругается __flash Item It2 = {&It3,&It1,f2}; __flash Item It3 = {&It1,&It2,f3};

Item __flash * current = It1;

Что характерно, forward-определения функций не вызывают у него отвращения, а вот с указателями (они ведь тоже во flash) -- беда. :(

Как уговорить компилятор? Как хорошо было бы разместить структуру меню во flash!

Спасибо.

Reply to
Arcady Korotkevitch
Loading thread data ...

Пpивет Arcady!

07 Май 04 22:43, Arcady Korotkevitch -> All:

AK> Стpою меню. Hyжно пеpемещаться по пyнктам тyда-обpатно и по кольцy, AK> Как хоpошо было бы pазместить стpyктypy меню во flash!

Hапpимеp pазмести не 3 стpyктypы, а массив стpyктyp и ссылкy на номеp стpyктypы.

struct Item { unsigned char Next; unsigned char Prev; void (*fun)(char); };

__flash Item It1[]= { 2,1,f1, 0,2,f2, 1,0,f3 };

Igor

Reply to
Igor Ulanov

Hello, Arcady! You wrote on Fri, 7 May 2004 18:43:28 +0000 (UTC):

extern __flash Item It1; extern __flash Item It2; extern __flash Item It3;

AK> __flash Item It1 = {&It2,&It3,f1}; // Здесь компилятор не находит AK> It2 и AK> It3 и ругается __flash Item It2 = {&It3,&It1,f2}; AK> __flash Item It3 = {&It1,&It2,f3};

With best regards, Alexander Derazhne.

Reply to
Alexander Derazhne

Igor Ulanov пишет:

Делал именно так, но при болшом и разветвленном меню легко запутаться.

Reply to
Arcady Korotkevitch

Alexander Derazhne пишет:

Огромное спасибо!

Reply to
Arcady Korotkevitch

Привет, 8 мая 2004 г., 23:28:17, ты писал(а):

AK> Делал именно так, но при болшом и разветвленном меню легко AK> запутаться.

Обязательно запутаешься. Я вышел из положения, придумав несложный язык описания меню и написав компилятор с него в исходные файлы *.c и *.h На первый взгляд выглядит довольно нецелесообразно, но при большом количестве исправлений и разветвленном меню существенно экономит время.

Всего хорошего.

Reply to
Alexey Krasnov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.