c - 运行程序时出错 "Segmentation fault core dumped"

标签 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 运行主进程

最佳答案

你的task2函数需要返回一个FUNC,不是吗?

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

我认为你想这样调用它;

signalD(i,f)(p);

您的编译器出于某种原因向您发出警告,纠正它们,您就可以对代码进行一些修复。

关于c - 运行程序时出错 "Segmentation fault core dumped",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54026859/

相关文章:

java - 为什么%运算符在C/C++中不能用于 float ,但在Java和C#中可以使用?

javascript - 如何使用 (function(global) { ... })(this);

c++ - 这两个类型测试对象动态数组声明之间的区别?

c++ - 我的开关盒有什么问题?

c - 使用 Dib 部分替换慢速 SetPixel() 时图像翻转

对字符串文字 char *p = "abcd"执行++*(p++) 时出现 C 运行时错误(未定义行为)

java - 需要为用户生成每个学生的卷号吗?

c++ 实现友元/内联函数

c - 将结构数组分配给指针

c++ - 指向失去值(value)的对象的 vector 的指针