[elektro] C cimke milyen adattípusnak számít?
hg12345
hg12345 at freemail.hu
Thu Jan 24 14:45:33 CET 2008
Szia!
Nincs igazad, van másik :-()
létezik a követekző megoldás:
Jump Tables via Function Pointer Arrays
amit a SWITCH helyett ajánlanak, mert sokkal gyorsabb :-)
kb:
void (*pf[])(void) = {fna, fnb, fnc,
, fnz};
használata
*pF[index]();
Raadasul egyes rendszerek megengedik a relativ hasznalatot is.
GCC leiras 5.3 "Label as Value"
ugyan az mint fent némi különbséggel
Absolute
static void *array[] = { &&foo, &&bar, &&hack };
goto *array[index];
Relativ
static int* array[] {&&foo-&&foo, &&bar-&&foo, &&back-&&foo);
goto *(&&foo + array[index]) ;
A két alkalmazás közötti különbség csak annyi, hogy elvileg az
első "const" is definiálható, addig a második csak "static"-nt, mert a
linker nem tud két pointerrel müveletet végezni, ezt csak init időben
tudja a C megcsinalni.
A MPLABC30 kicsit tehetségtelenebb, sajnos mert a program csak ROM-
ból futhat, igy több korlatozas van. Hasonló problemak vannak a
fuggvénypointer tipusaval...
> > GCC, MLABC-30 forditojával probalkozom.
> > Gondoltam egy cimke kicsit hasonlo tipusu mint egy
fuggfénypointer,
> > de nem egyertelmu.
>
> A címke nem adat és nincs típusa. A switch az egyetlen módszer,
ahogyan
> címkére számítási eredménytől függően ugorhatsz.
>
> Palasik Sándor
>
> -----------------------------------------
> elektro[-flame|-etc]
>
Fotózz, töltsd fel képeid és oszd meg barátaiddal! - Fotóalbum.huhttp://ad.adverticum.net/b/cl,1,6022,242642,287334/click.prm
More information about the Elektro
mailing list