运行程序“分段故障核心转储”时出错

时间:2019-01-03 17:15:01

标签: c function pointers

我试图研究指针和函数,所以我决定编写一个简单的代码。但是我对新类型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 运行主进程

1 个答案:

答案 0 :(得分:1)

您的task2函数需要返回一个FUNC吗?

FUNC task2(int i, FUNC p)
{
    printf("Run task 2\n");
    return p;    
}

我想你也想这样称呼;

signalD(i,f)(p);

您正在编译的原因是警告您,请更正它们,您可以为代码提供一些修复程序。