Я пытаюсь изучить указатели и функции, поэтому я решил написать простой код. Но у меня проблема с переменной нового типа SIGNAL.
Каждый раз, когда код работает, я получаю сообщение об ошибке.
Я пытался переписать код, но это все та же ошибка. Я думаю, что проблема с типами данных, которые я пытаюсь отправить на сигнал D.
Но я не могу понять, где я ошибаюсь.
Я пытался отправить другие типы данных и играл с функциями, но результат все тот же.
#include <stdio.h>
typedef void (*FUNC) (void*);
typedef FUNC (*SIGNAL) (int p, FUNC i);
void task1()
{
printf("Run task 1\n");
}
void task2()
{
printf("Run task 2\n");
}
void mainProcess(SIGNAL signalD, int i, void *p,void (*f)(void*))
{
task1();
signalD(p,f)(i);//I'm afraid that here is a mistake with data maybe (p,f)(f)
printf("Run main process\n");
}
void task3()
{
printf("Run task 3\n");
}
int main()
{
mainProcess(task2,5,0,task3);
return 0;
}
Программа аварийно завершает работу при выполнении части signalD.
Я ожидаю, что это должно напечатать:
Выполнить задание 1
Выполнить задание 2
Запустить основной процесс