[elektro] C függvény kérdés?

Moczik Gabor pm_levlista at progzmaster.hu
Fri May 28 19:31:05 CEST 2010


potyo wrote:
> Abból kiindulva, hogy kbhit() meg getc() függvények léteznek, ez
> alapján mások is így szokták. Esetleg lehet a kbhit()-et makrózni a
> gyorsabb futás érdekében - persze csak ha a konkrét feladatban
> megoldható.

Általában nem hatékony. Amikor az érvényesség eldöntése és az eredmény 
kiszámítása részben közös számításokon alapul, akkor a két külön 
függvény nem hatékony. Egyszer kiszámolod hogy megmondd hogy jó-e, aztán 
mégegyszer a másik függvényben hogy meglegyen az eredmény is.

A pointer-es átadás esetleg lehet jó, bár meg kell nézni a fordított 
kódot is, hogy mennyire hatékony az adott eszközön. Kissé kényelmetlen 
használni, ha amúgy az eredmény nem kellene csak egy feltételvizsgálat 
vagy egy számítás erejéig, de mégis muszáj egy segédváltozót deklarálni 
hozzá.

Az elsó 8 bit eredmény, felső 8 bit flag jellegű dolgot inkább kerülném 
ha egy mód van rá, később káoszt okozhatnak a különféle méretű 
visszatérési értékek. Akkor már inkább struktúra, ez ugyanezt tudja, 
csak áttekinthetőbb lesz.

Bárhogy is oldod meg, sajnos az a hátrány megmarad, hogy vagy a valid 
flag-et vagy az eredményt segédváltozóba kell tenni a függvényhívásnál, 
nem tudod helyben vizsgálni egy if-fel, mint ahogy ASM-ben tennéd.

Erre talán az egyetlen mód, globális változóban visszajelezni az utolsó 
hívás érvényességét vagy eredményét. Szerintem ez egy teljesen jó 
megoldás, csak kommentezve legyen mindenhol hogy ez így működik.
Ha kell később az eredmény, akkor átmásolod magadnak, ha csak a 
következő if-hez kell, akkor meg nem kell felesleges segédváltozókat 
használni. Multitaszk rendszerben problémás, de mikrokontrolleren ritkán 
van valódi multitasking.

Nem kell a globális változóktól undorodni, ez is egy nyelvi lehetőség, 
ha segít, használni kell. Van egy mérő célgép amiben szinte minden 
mérési eredményt és státuszt globálisan tárolok, mert annyira 
összefüggenek a dolgok hogy a komplexitást az áttekinthetetlen szintre 
emelné ha a C++ -ban szokásos láthatósági szabályokhoz görcsösen 
ragaszkodnék.

Lényeg, hogy jól kommentezd a kódot, és akkor 5 év múlva is bele tudsz 
írni, ha kell.

-- 
((( Móczik Gábor  )))--((( e|mail: pm-01 |@| progzmaster |.| hu )))
((( S.k.y.p.e.: moczik )))



More information about the Elektro mailing list