[an error occurred while processing this directive]
|
#define FUNNUM 8
#define LSTNUM 8static void (*prcfunc[LSTNUM][FUNNUM])(void); //2-мерный массив указателей на функции, типа void func(void)
short AddFunction(short funclist,short funcnum,void (*fun)(void))) // добавить функцию в массив
{
if(funclist<0||funclist>(LSTNUM-1)) return 0;
if(funcnum<0||funcnum>(FUNNUM-1)) return 0;
if(prcfunc[funclist][funcnum]!=NULL) return 0;
prcfunc[funclist][funcnum]=fun;
return 1;
}void DeleteFunction(short funclist,short funcnum) //удалить функцию из массива
{
if(funclist<0||funclist>(LSTNUM-1)) return;
if(funcnum<0||funcnum>(FUNNUM-1)) return;
prcfunc[funclist][funcnum]=NULL;
}/*****Вызов функций. Встраивается по месту:-))****************/
void AnalyzFunction(short funclist)
{
short i;
if(funclist<0||funclist>(LSTNUM-1)) return;
for(i=0;i<FUNCNUM;i++) if(prcfunc[funclist][i]!=NULL) (*prcfunc[funcllist][i])(); // вызов в-ии, если указатель не равен 0.
}/****Пример*********************/
void supermessage(void)
{
printf("Банзай!!!!!");}
AddFunction(0,0,supermessage);
E-mail: info@telesys.ru