我试图研究指针和函数,所以我决定编写一个简单的代码。但是我对新类型SIGNAL的变量有疑问。 每次运行代码时,我都会丢掉那个错误的核心。 我试图重写代码,但仍然是相同的错误。我认为数据类型存在问题,我尝试将其发送到signalD。 但是我找不到我错了。
我尝试发送其他数据类型并使用函数,但结果仍然相同。
#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 运行主进程
答案 0 :(得分:1)
您的task2函数需要返回一个FUNC
吗?
FUNC task2(int i, FUNC p)
{
printf("Run task 2\n");
return p;
}
我想你也想这样称呼;
signalD(i,f)(p);
您正在编译的原因是警告您,请更正它们,您可以为代码提供一些修复程序。