[elektro] C fordítás közbeni adat kiírás
SZIGETI Szabolcs
szigiszabolcs at gmail.com
Thu Jan 10 18:09:19 CET 2013
Hali!
Nem tudom, hány fordítót írtál, de azért a legtöbbet nem kisiskolások
csinálják. Viszont egyáltalán nem biztos, hogy ez az érték mindig
rendelkezésre áll akkor, amikor ki a diagnosztikai üzenetek megjelenítése
lehetséges. Ráadásul szerintem baromi sok hibalehetőséggel jár, ha ilyen
módon akarod kinyerni az infókat és az biztos, hogy a legkevésbé sem lesz
hordozható és automatizálható.
Konkrétan nem is emlékszem, hogy valaha is láttam volna hogy erre a
megoldásra lett volna szükség.
A leírásod szerint ráadásul ez nem egy egyszeri művelet, hanem sokszor
ismétlődik. Ennél a diagnosztikából bogarásszuk megoldásnál tuti, hogy
egyszer valaki hibázni fog. Jobban jársz, ha ez az infó a kódban van
lerendezve.
Szabolcs
2013. január 10. 17:51 hg12345 írta, <hg12345 at freemail.hu>:
> Miért írnám a programomat, mert a kisiskolás programozók egy egyszerű
> listázó kimenetet nem tudtak a beírni a forditó programba. Az kész röhely,
> hogy fordítási időben egyetlen define vagy macróban számolt konstans
> értéket nem lehet kilistázni!
> Azt meg érteném, hogy olyan dolgokat nem listázok ki, ami csak a linker
> után kap értéket, de hogy macro, define érték adással megadott számot nem
> lehet megnézni listában, milyen #define ami a linkerben kap értéket ?!?
> Arról ne is szólva, hogy az ARM-nál a offset cimzés miatt, még a struktura
> tagok címét se a linker számolja, ha nem a forditó az első menetben :-))).
> Vagyis még ez is megvan az első fordítási menetben.
>
> Azért egy menű kezelés nem igy néz ki :-)), ilyen technikával nem túl
> szerkeszthető egy menű.
> ((Dehogy irom át a menü szerkesztést, amikor text-ben programozói tudás
> nélkül szövegesen írható :-))
> Egy menűpont az egy sor és ennek minden adatot tartalmazni kell, mivel
> nincs szétszórva a definició generálási hiba sincs!
>
> Az egész csak a kényelmet szolgálná, a program betöltése után már egy
> tömbbe letettem minden értéket.
>
> Üdv
>
>
> Fuzesi Arnold <arnold.fuzesi.lista at gmail.com> írta:
> >Anno belefutottam ebbe én is, hasonlokepp menukezeles kapcsan.>
> (ha jól értem a gondot)>
> >
> Végül végigszívattam magam vele, nem írtam újra.>
> De arra jutottam, rossz volt a programtervezés...>
> >
> Szedd külön tömbökbe a menüket szerintem, és pointerek legyenek benne
> egymásra >
> mutogatva. Pointernek meg ertekul tudod adni az "altömb" kezdőcímét,
> MODBUS >
> cimeket tartalmazo segedtömböt stb.>
> >
> Magyarul :)>
> >
> enum{almenu0_cim,almenu1_cim,....almenu_last};>
> >
> char* fomenuptr[almenu_last];>
> char almenu0[hablabla];>
> >
> fomenuptr[almenu0_cim]=&almenu0; stb.>
> >
> Ha jól értem a gondot.>
> >
> Ahogy mas is irta, nagylevegő szerintem, és újból nekifutás.>
> >
> A.>
> >
> On 2013.01.10. 17:01, hg12345 wrote:>
> > Nehéz elmagyarázni,>
> >>
> > A készülék menüje egy tömbben van tárolva (több mint 400 bejegyzés) , a
> tömb indexe az enummal meghatározott felsorolás tipus. Ez a tömb nem tömb,
> hanem egy többszörös fa struktura tömbben tárolva. A generálás nem
> lineárisan egymás után megadva történik, hanem szerkezett szerint, igy csak
> nagyjából tudom mi hol van, de kezelés szempontjából teljesen mindegy.>
> > Ami nem, hogy a kommunikációs felületen a tömbben való elhelyezkedés
> adja a MODBUS regiszter címét, tehát az tisztán látást segítő index alatt
> van a regiszter cimem van (rejtve), ami itt nem éppen nem szerencsés.>
> >>
> > A kinyerésére csak egy indexekkel feltöltött tömböt kell tárolnom,
> valami bugyuta hivatkozással, hogy ne optimalizálja ki :-(, és debug
> üzemmódban onnan kinézhetem az indexek sorszámát.>
> >>
> > Lassú és hosszadalmas.....>
> >>
> > Már mindent átnéztem, de nem találtam erre megoldást, egész egyszerűen
> nem tudom elhinni, hogy fordítási időben ennyire nem tud segíteni a
> fordító.>
> >>
> > SZIGETI Szabolcs <szigiszabolcs at gmail.com> írta:>
> >> HalI!>>
> >>>
> > Mármint azt szeretnéd, hogy van egy enum-od, és az abban szereplő>>
> > szimbolikus értékeknek megfelelő számot szeretnéd megtudni?>>
> > Ez miért kell? Éppen azért van az enum, hogy az értékek ne homályosítsák
> el>>
> > tisztánlátásunkat.>>
> >>>
> > Ha viszont nagyon akarod, akkor az enumban közvetlenül megadhatod az>>
> > értéket.>>
> >>>
> > Szabolcs>>
> >>>
> >>>
> >>>
> > 2013. január 10. 15:51 hg12345 írta, <hg12345 at freemail.hu>:>>
> >>>
> >> Hi,>>
> >>>>
> >> már kérdeztem, de annyira hiányzik, hogy rákérdezek mégegyszer.>>
> >>>>
> >> Nincs megoldás fordításkozben a #warning egy enumerátor értékét kiírjam
> a>>
> >> listázó képernyöre?>>
> >>>>
> >> Tölem lehet akármilyen macro, de nagyon-nagyon hiányzik egy ilyen>>
> >> lehetöség :-((>>
> >>>>
> >> Fordítás után is csak egy tömbbe letéve tudom elöhívni, nincs erre>>
> >> egyszerűbb megoldás... normál C99 fordító.>>
> >>>>
> >> Üdv>>
> >>>>
> >>>>
> >> ----------------------------------------->>
> >> elektro[-flame|-etc]>>
> > ----------------------------------------->>
> > elektro[-flame|-etc]>>
> >>
> >>
> > ----------------------------------------->
> > elektro[-flame|-etc]>
> >>
> >
> ----------------------------------------->
> elektro[-flame|-etc]
>
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list