Автор: Andy
« : 24 Апреля 2014, 10:28:30 »Ок, спасибо!
А не улетит ли функция по нулевому указателю на ресет? NULL - это ноль, не?
Да и весь код чужой переписывать придется - там эти функции как переходящий флвг между другими функциями гуляют - выстрелить в ногу проще простого, пока я не монстр в указателями, остановлюсь на обертке,Ну тогда лучше обернуть, раз куча унаследованного кода.
void print_time (uint16_t* pminutes)
{
printf("Minutes are: %d\\n", *pminutes);
}
void print_none(uint16_t* zzz)
{
printf("Minutes are: None\\n");
}
unsigned int QueueDelay2(void (*TaskPtr)(uint16_t*), unsigned int Ticks, uint16_t* pminutes)
{
TaskPtr(pminutes);
return 0;
}
int main(int argc, char *argv[])
{
uint16_t min = 123;
QueueDelay2(print_time, 500, &min);
QueueDelay2(print_none, 500, NULL);
return 0;
}
void print_time (uint16_t *minutes);
void alarm_print_time (void);
void alarm_print_time (void){
print_time(&min_alarm);
}
QueueDelay(alarm_print_time, 500);
extern unsigned int QueueDelay(void (*TaskPtr)(uint16_t *minutes), unsigned int Ticks, uint16_t *minutes)
{
// blah-blah
TaskPtr(minutes);
// blah-blah
}
someresult = print_time (&min_alarm);
QueueDelay(someresult,500);
void print_time (uint16_t *minutes);
extern unsigned int QueueDelay(void (*TaskPtr)(), unsigned int Ticks);
QueueDelay(Set_hour_min,500);
QueueDelay(print_time (&min_alarm),500);