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