Menu kezelés C-ben
Rancz Lajos
csiga at fosch.com
Fri Sep 21 15:21:23 CEST 2007
Szia!
Nem értem amit leírtál :-) Mire akarod használni relativ meg abszolút
címzést? Nem arra vagyok kíváncsi, hogy hogy akarod megcsinálni, hanem
hogy mi a feladat :-))
Üdv,
Lajos
hg12345 írta:
> Szia!
>
> Elvileg amit leírtam az programmemóriában tárolja ezt a tömböket.
> De ha nem egybe forditom #include a teljes programot akkkor bizony
> legalább két extern változom lesz, a függvény pointer és a memória
> pointer. Kényelmes lenne azokat a függvényeket amik meghatározzák
> az állíthatóságot egy segmens-be definiálni, (ez könnyen megoldható)
> és a segmenses belüli relativ cimet tárolni.
> static void* ptr= &&offset - &&start, de sajnos azt a GCC futási időben
> tudja kezelni, a linker miatt! Mondjuk ez még nem lenne probléma.
>
> De hasonló problémák vetödik fel a memória pointer esetén, ezt már
> nem tudom eliminálni. Mindenképpen szükséges absolut és relativ
> cimzés a MENU leírásban, de hogy a relativ címzést elötudjam állítani
> korrekten forditási időben kellen két (nekem) absolut (de forditónak
> relokalhato) címből előállítani az offsetet, erre már nem képes a linker
> miatt.
> Ha nem pointeresen használom, hanem csinálok egy enum index név
> felsorolást, majd egy tömbre ráhuzom és ez alapján genererálom a
> cimeket, akkor minden cimzés és ezzel kapcsolatos meghivás konstans
> index-szü tömbkezelés. Ezzel ez megoldható, de egy hátránya van ha
> már haszálom a linkert, igy a különböző programok csak az extern
> néven definiált változókat látják, ha enum index felsorolást használok,
> akkor az include miatt mindenki látja és hozzáfér (elgépelés és egyébb
> hülyeség esetén) a neki nem elérhető változokhoz is. Ez nem nagy
> probléma, de kedvezöbb lenne az global/extern megoldás.
>
> Stackelt, Matrix, Tree stilusú MENU-t szeretnék csinálni.... kis kijelzővel
> rendelkező készülékek. (1x v. 2x 7segmens kijelző, vagy 2-4 soros LCD
> kijelzőn...)
>
> A megoldáshoz nagyon közel vagyok, de reméltem valaki már
> végigjárta elöttem ezt az utat... Vagy egy hasonló, de más felépítésű
> megoldástra világít rá....
>
>
>
>
>
>> Helló!
>>
>> És ez miért nem jó így, ha csak erre van szükség? A fordítónak meg
>>
> tudod
>
>> mondani, hogy a programmemóriában tárolja ezeket a tömböket.
>>
>> Üdv,
>> Lajos
>>
>> hg12345 írta:
>>
>>> Szia!
>>>
>>> Ha ezt így oldanám meg, minden Menühöz saját programot kellene
>>>
> írni
>
>>> mind az állításra mind a kirirára, mind a feldolgozásra...... Kérdés,
>>>
> hogy
>
>>> elferek a memóriában.
>>>
>>> Valami ilyesmit szeretnék:
>>>
>>> struct MENUITEM
>>> {
>>> int iString;
>>> int *PtrMem;
>>> char iNumber;
>>> union{
>>> struct{
>>> char Setting;
>>> char DecimalPoint;
>>> char Valid;
>>> };
>>> void *Fn(void);
>>> };
>>> };
>>>
>>> #define ITEM(s,pm,in,se,de,va) {s,pm,in,{se,de,va}},
>>> #define ITEMF(s,pm,in,f) {s,pm,in,{f}};
>>>
>>>
>>> const struct MENUITEM Menu[]={
>>> ITEM(.........)
>>> ITEM(.........)
>>> ITEMF(.........)
>>> ITEM(........)
>>> stb
>>> };
>>>
>>> Ez a megoldás egyszerüen szövegesen karbantartható.....
>>> Ha már benne van a FLASH/ROM-ban onnan már kényelmesen
>>> feldolgozható....
>>>
>>>
>> -----------------------------------------
>> elektro[-flame|-etc]
>>
>>
>
> Olvasd az [origo]-t a mobilodon: mini magazinok a Mobizin-en
> ___________________________________________________
> www.t-mobile.hu/mobizin
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list