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

May 07, 2004 5 Replies

Строю меню. Нужно перемещаться по пунктам туда-обратно и по кольцу, т.е. нужно реализовать простой двусвязный список. Но поместить его во 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!



Спасибо.


П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

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.

Igor Ulanov пишет:

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

Alexander Derazhne пишет:

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

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

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

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

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

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required