[elektro] C fordítás közbeni adat kiírás
SZIGETI Szabolcs
szigiszabolcs at gmail.com
Thu Jan 10 18:51:23 CET 2013
Jaja. Ok, akkor én értettem félre.
Szabolcs
2013. január 10. 18:49 Zoltán Gyarmati írta, <profikam at gmail.com>:
> Igen, ez vilagos, az idezett megoldas a
> "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!"
> kitételre volt valasz, es irtam is utana, hogy az enum az mas teszta :)
>
> SZIGETI Szabolcs <szigiszabolcs at gmail.com> írta (2013. január 10. 18:27):
> > Hali!
> >
> > Igen, csak lássuk be, hogy a #define meg az enum az különbözik, igaz
> C-ben
> > nem nagyon. A define egy sima preprocesszálás, amely nagyrészt szöveg
> > szerinti helyettesítés. A fenti példa nem csinál mást, mint némi
> > bűvészkedés után előállítja azt a sort, hogy #pragma message "A bitek
> > száma: 8".
> >
> > Az enumot meg nyelvi elem és a fordító dolgozza fel (ekkor már nincs is
> > #pragma message meg társai, hiszen azokat a preprocesszor már megette.).
> > Ilyenkor már csak a nylevi fordítással kapcsolatos üzenetek jöhetnek elő.
> >
> > Nem azt mondom persze, hogy nem lehetne olyan fordítót csinálni, ami
> > fordítási időben ki tudná írni az enumok értékét, de szerintem erre
> > elenyésző az igény, ráadásul ugye c++-ban, meg újabb nyelvekben az enum
> már
> > nem álruhás int, hanem típusa van (ahogy kell), így biztosan csak a
> > fordítás későbbi szakaszában kerül feldolgozásra és az sem biztos, hogy
> van
> > ésszerűen kiírható reprezentációja, így a compiler készítők sem fognak
> > ilyen egzotikus problémákat megoldani.
> >
> > Szabolcs
> >
> >
> >
> > 2013. január 10. 18:15 Zoltán Gyarmati írta, <profikam at gmail.com>:
> >
> >> Akkor megse ertettelek, a #define makro ertekeket ki lehet iratni, ld
> >> pl itt:
> >>
> http://stackoverflow.com/questions/1562074/how-do-i-show-the-value-of-a-define-at-compile-time
> >> ,
> >> azaz pl igy:
> >>
> >>
> >> #define XSTR(x) STR(x)
> >> #define STR(x) #x
> >>
> >> #define BITS 8
> >> .
> >> .
> >> .
> >> #pragma message "A bitek szama: " XSTR(BITS)
> >> .
> >> .
> >> main{
> >>
> >> }
> >>
> >>
> >>
> >> amit szerintem nem lehet, az az, hogy egy enum auto-enumerated
> >> ertekeit kiiratani. Azt mar csak remelni tudom, hogy ez a "pure C"
> >> fordito is tudja ezt, de elvileg a fenti megoldas az standard.
> >>
> >>
> >>
> >>
> >> hg12345 <hg12345 at freemail.hu> írta (2013. január 10. 17:54):
> >> > A forditó egy pure C (C99 opciókkal), maradnék a hordozható bárhol
> >> kisegítő programok nélkül forditható verziónál.
> >> >
> >> > Köszönöm mindenkinek a segítséget
> >> >
> >> > Üdv
> >> >
> >> >
> >> >
> >> >
> >> > "Zoltán Gyarmati" <profikam at gmail.com> írta:
> >> >>hm, kb ertem :)>
> >> > En lehet elgondolkodnek azon, hogy ezt a tombot forditas elott egy>
> >> > scripttel generaltatnam a makefilebol, es ugyanez a script definialna>
> >> > makrokat is az egyes elemekhez egy szinten generalt header fileban,>
> >> > majd ahol ezeket az ertekeket hasznalni akarod, oda a makrokat irod,>
> >> > mikor kodolsz, meg persze beincludold ezt a generalt headert. Ebben
> a>
> >> > scriptben persze aztan azt irathatnal ki amit akarsz, sot, valami>
> >> > olyasmit is lehetne trukkozni, hogy te egy egyszeru textfileban csak>
> >> > definialod a menu szerkezetet (de ez lehet akar xml is), majd a>
> >> > tombodet meg a makrokat ebbol generalna a script. Persze ehhez kell>
> >> > venni egy nagy levegot, es raszanni egy munkanapot, de utana
> szerintem>
> >> > konnyebb lenne az eleted.>
> >> >>
> >> > hg12345 <hg12345 at freemail.hu> írta (2013. január 10. 17:01):>
> >> >> 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]>
> >> >>
> >> >>
> >> >>
> >> > -- >
> >> > Zoltan Gyarmati>
> >> > Gtalk: profikam at gmail.com>
> >> > MSN: profikam at theend.hu>
> >> > ICQ: 335693662>
> >> > Skype: profikam3151>
> >> >>
> >> > Phone number: 0036-30-608-30-79>
> >> >>
> >> > ----------------------------------------->
> >> > elektro[-flame|-etc]>
> >> >
> >> >
> >> > -----------------------------------------
> >> > elektro[-flame|-etc]
> >>
> >>
> >>
> >> --
> >> Zoltan Gyarmati
> >> Gtalk: profikam at gmail.com
> >> MSN: profikam at theend.hu
> >> ICQ: 335693662
> >> Skype: profikam3151
> >>
> >> Phone number: 0036-30-608-30-79
> >>
> >> -----------------------------------------
> >> elektro[-flame|-etc]
> >>
> > -----------------------------------------
> > elektro[-flame|-etc]
>
>
>
> --
> Zoltan Gyarmati
> Gtalk: profikam at gmail.com
> MSN: profikam at theend.hu
> ICQ: 335693662
> Skype: profikam3151
>
> Phone number: 0036-30-608-30-79
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list