

ANSI C - potřebuju zavolat funkci, když znám její název
Ahoj,
programuju PICy v ANSI C a narazil jsem na problém. Potřebuju, aby se po stisku tlačítka zavolala určitá funkce. S tlačítkem problém není, ale neumím to, jak zavolat tu funkci, když znám její název. V PHP na tohle existuje funkce call_user_func. Nic podobného jsem ale v Céčku nenašel. Díky všem za odpovědi.
co??? Funcia sa vola:
funkcia(parametre);
Bolo by dobre precitat si najprv nejake zaklady C :)
Asi jsem to trošku blbě zformuloval. Dělám něco jako menu a nechci to dělat "natvrdo". Chci mít napsány všechny položky v menu v nějakém poli (nazvěme ho třeba array), které bude vypadat takhle:
{"menu1","menu2","menu3"}
To se vypíše na displej. Potom tam budou tlačítka a bude se měnit pozice kurzoru nad jednotlivými položkami. Aktuální pozice kurzoru bude uložena v proměnné "hover". A potom potřebuju funkci, která mi zavolá funkci s názvem array[hover]. V PHP by to mohlo vypadat třeba takhle:
Ak by nahodou PIC prekladac nevedel poiuntre na fcie, tak potom nejak napevno:
menu[] = {"otvorit","zavret","konec"};
#define MENU1_FN Otvorit
#define MENU2_FN Zavret
#define MENU3_FN Konec
a potom:
if(idx==0) MENU1_FN();
else if(idx==1) MENU2_FN();
else MENU3_FN();
Tento sposob je jednoduchsi pre prekladac (ak by nezvladol tie pointre na funkcie).
OK, díky. Ten druhý způsob se mi zdá taky jednodušší. Snažím se šetřit místem, moc ho na to PICu není
.
Jinak používám na to software mikroC PRO for PIC.
K tomu prekladacu je aj manual
mikroc_manual.pdf
mas tam aj kapitolu "Function pointers"
P.S. ktory sposob zabere menej miesta musis skusit, tazko povedat (zavisi od instrukcii CPU). Sposob s pointrami na funkcie by som ja osobne preferoval, kvoli blbovzdornosti, lepsej managovatelnosti zdrojakov...