[an error occurred while processing this directive]
Ну вот отрывки из одной работы.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено -=ВН=- 09 июня 2006 г. 16:25
В ответ на: А можно небольшой пример? С указателями на переменные я уже разобрался, а до такого не доходил. отправлено <font color=gray>1111</font> 09 июня 2006 г. 16:02



#define FUNNUM 8
#define LSTNUM 8

static 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: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru