c - 传递类型定义函数指针

标签 c function pointers compiler-errors

我有两个具有相同签名的函数,我为它们定义了一个函数指针。此外,我对提到的函数指针进行了类型定义以简化它的使用。代码如下:

int add(int first_op, int second_op)
{
    return first_op + second_op;
}

int subtract(int first_op, int second_op)
{
    return first_op - second_op;
}

typedef int (*functionPtr)(int, int);

int do_math(functionPtr, int first, int second){
    return functionPtr(first, second);
}

main() {
    int a=3, b=2;
    functionPtr f = &add;
    printf("Result of add = %d\n", f(a,b));

    f = &subtract;
    printf("Result of subtract = %d\n", f(a,b));
}

我得到方法 do_math 的两个错误,如下所示:

In function ‘do_math’: error: parameter name omitted int do_math(functionPtr, int first, int second){

error: expected expression before ‘functionPtr’ return functionPtr(first, second);

我做错了什么?谢谢

最佳答案

functionPtr 是一种类型。参数还必须有一个名称:

int do_math(functionPtr function, int first, int second){
    return function(first, second);
}

关于c - 传递类型定义函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35866179/

相关文章:

Matlab 对于类型 'C' 的输入参数未定义函数或方法 'double'

c++ - 如何声明指针成员禁止删除它

调用结构指针错误 : "expected a identifier.."

c - C语言中头文件的作用是什么?

javascript - 执行带有参数的数组中的函数

jquery - 查找每个元素的最后一个子元素

c - 段错误,尽管代码从未执行?

c - 编写代码来查找坐标之间的平行线(使用 C)

C 程序逐行读取文本文件,然后将这些行打印到终端

c - 从多个socket读取 : single thread with select vs. 多线程读取