gpt4 book ai didi

c - 保存由参数传递的函数指针

转载 作者:行者123 更新时间:2023-11-30 17:38:54 26 4
gpt4 key购买 nike

我有以下声明:

typedef void (*foo)(int op, int arg1, int arg2);
void goo(foo f);
{
BODY;
}

我想在我的代码中存储传递给 goo 的函数 f,但修改 body 和添加全局 foo 变量的自然方式(我无法更改 goo 的定义,但我可以编辑 body):

foo _f;
void goo(foo f);
{
_f = f;
}

正在产生段错误。如果有任何提示,我将不胜感激。

最佳答案

编辑根据您的完整代码,您应该将 test.c 中的函数callback() 的名称更改为“callback”以外的名称,因为您已经在pagesim.c 中定义了该符号。我进行了此编辑,程序运行良好。

<小时/>

这是一个编译并运行的测试,也许您可​​以根据此发现错误:

#include <stdio.h>
typedef void (*foo)(int op, int arg1, int arg2);

foo _f;

void goo(foo f)
{
_f = f;
_f(1, 2, 3);
}

void testfxn(int op, int arg1, int arg2) {
printf("%d %d %d", op, arg1, arg2);
}

void main() {
goo(testfxn);
}

关于c - 保存由参数传递的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22003382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com