bitfield v avr-gcc
Jan Waclawek
konfera@efton.sk
Pondělí Červen 16 23:55:11 CEST 2008
>
>Kod v maili vyzera ako vyzera, ale snad sa bude dat pochopit, co tym myslim a ako zhruba to funguje.
Jasne.
>
>Ak ma byt vztah menu k bitovym polozkam taky, ze cez menu si nastavujem/nulujem jednotlive bity kdesi v bitovom poli, tak u mna by to muselo ist cez funkciu menu a jednoznacny DWORD parameter urcujuci polozku. Parameter je u mna spravidla enum a vo funkcii mam switch/case.
Mnoooooo, tak to sa od toho mat miesto Tvojho parametra pointer na funkciu ktora rovno manipuluje s datami, moc nelisi.
S nywebom si dokonca take funkcie viem nagenerovat zo spolocneho vzoru (netreba na to nyweb, ide to aj predprocesorom, ale s tym je to on***a), ak maju robit to iste len nad roznymi premennymi.
> Vravel som, pohlad na efektivitu sa moze lisit. U mna prevlada snaha vyznat sa vo vlastnom kode aj po dlhsom case.
No ved to je aj moj ciel.
Tak si pozrime, co treba spravit, ked chces pridat dalsiu polozku do menu:
- musis inkrementovat pocet poloziek
- pridat polozku do pola - asi riadok niekam do inicializatora, ze?
- pridat string, ale tomu sa neda vyhnut; pridat explicitne jeho dlzku (sizeof - 1 alebo pocitas pismenka?)
- v tej polozke pridat dalsi DWORD parameter (preco DWORD - to ich chces mat tak vela? to je do jednocipu?) - generujes ich nejako aby boli v postupnosti, alebo si treba pozriet predchadzajuce aby nedoslo k duplicite?
- v tej spracovacej funkcii dopisat do toho switchu novy case (a neviem si presne predstavit obsah toho case)
Neviem, mne sa to zda komplikovane; a po 3 rokoch nie som si isty ze spravim vsetky kroky spravne.
V mojej verzii (predpokladajme, ze existuju kyzene pointre):
- pole nema definovany pocet poloziek, mam ukoncovaci zaznam (nieco v nom je nulove - asi ten typ), staci pridat riadok do inicializatora
- nemam stringy v ramke, takze rovno pointer na string, ten samozrejme aj ja musim pridat
- zadam typ ako "bit" (u mna je to konstanta a kedze som s tym dneska robil tak si to pamatam, je to 4 ;-) )
- rovno pointer na ten bit; funkciu na polozku menu kde sa manipuluje bit (do ktorej ten pointer vstupuje ako parameter) mam uz napisanu takze je vymalovane.
Sa mi to moje zda lepsie... Mozno som trosicka zaujaty... ;-)
wek
Další informace o konferenci Hw-list