[elektro] Fw: C18 előfordító
Lajos Rancz
lajos.rancz at gmail.com
Tue Jun 16 14:46:55 CEST 2015
Helló!
Ezt nem a preprocessor csinálja, hanem a fordító! De vonatkoztassunk el!
Tfh van egy olyan bonyolult számításod ami:
- fordítási időben számítható lenne
- futási időben túlságosan költséges a számítása (és felesleges is előző
miatt)
Ezekre az esetekre nagyon jól jön, ha tudod szavatolni, hogy a kifejezés
kiértékelése megtörténik fordítási időben. Azért nem jó külön toolba rakni,
mert az egy csomó felesleges problémát behoz és sok esetben nem is járható
út.
Példát is hozok: konstans stringek hash számítása.
- van vmi adat struktúrád, aminek elemeit stringekkel azonosítod mert
így kényelmes
- ennek az adatstruktúrának az elérését meg megint stringekkel szeretnéd
megoldani
- mindezt a lehető leggyorsabban
Ekkor három lehetséges irány van:
- enum/define: az vele a probléma, hogy egy darab headerbe kell raknod
az összes lehetséges értéket, nem tudod dinamikusan bővíteni
- egy dictionary string kulccsal: nem lesz túl optimális, mert string
compareket kell használni (vagy unordered_map-nél string hash számítást)
- compile time számítod a hasht és ezt használod a mapban. Ez jó, csak
szavatolnod kell, hogy compile time előáll a hash
üdv
2015. június 16. 14:28 elight írta, <elight at gmail.hu>:
> Azt igen,
> de hogy miért kell feltétlen az előfordítóra
> bízni függvények kiszámítását, változók kezelésével,
> azt még nem nagyon kapizsgálom.
> Emulálj neki egy szegmentált területet ,
> és azt akkor használod amikor akarod.
> Akár kizárólag csak a modulok futásának
> kezdetekor. Ez egykét plus user függvény
> és csak abba a verzióba linkeled amelyikben
> ténylegesen indokolt. Ahol nem ott nem létezik.
> Vagy nagyon kevés már a hely ilyesmire?
> Üdv István
>
> 2015-06-16 14:20 keltezéssel, Hofferek Attila írta:
> > Oké, tehát az elvet megértetted. Örülök.
> >
> > On 2015. 06. 16. 14:12, elight wrote:
> >> Akkor mégis csak valahogyan dinamikusnak kell
> >> lennie a dolognak..
> >>
> >> Ebben segíthet egy jó rendszerterv..
> >> Vagy csak éppen ad hock fércelgesz valami meglévőt?
> > -----------------------------------------
> > elektro[-flame|-etc]
> >
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list