[an error occurred while processing this directive]
|
Неправильное распределение памяти.
После долгого "выкусывания" представляю на ваш суд следующий пример:
typedef unsigned char uchar; uchar rrr (uchar x){ void f (uchar x) { typedef void (*tab_proc_type)(uchar); //------------------------------ M A I N ---------------------------------- (*tab_proc[old_proc])(0); while (1) ;#include <ATMEL/AT892051.H>
//#include <stdlib.h>
//#include <INTRINS.H>
typedef signed char schar;
typedef unsigned int uint;
return x;
}
uchar tmp ;
tmp = rrr(0);
}
tab_proc_type tab_proc[] = {&f,&f,&f};
//
void main (void) {
uchar new_proc = 2;
uchar old_proc = 2;
}
//------------------------------- E N D -----------------------------------
Если прогнать код на симуляторе, поставив брекпоинт супротив последнего while,
то хорошо видно, что переменные new_proc и old_proc волшебным образом обнуляются.
Не знаю, может быть косвенно вызываемые функции нужно объявлять как reentran,
но шишку я набил :-(.
Интересно, а как обстоят дела в V7.01 ?
E-mail: info@telesys.ru