[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