在下面的代码中,我使用一个指针来运行一个函数,其中变量是结构的变量。当我运行函数(*foo)(numbers)
时,我收到消息" 24:1: warning: parameter names (without types) in function declaration [enabled by default]"
,如果我将结构的名称与变量(*foo)(sum_elements numbers)
放在一起,我会遇到很多错误它缺少什么不能得到警告信息?
#include<stdio.h>
struct sum_elements{ //structure declaration
int number1,number2,sum_result,*foo;
}numbers;
void Sum_operator(struct sum_elements numbers){ //structure's function declaration
numbers.sum_result = numbers.number2 + numbers.number1;
printf("The sum is %d",numbers.sum_result);
}
int main(){
printf("Enter first number: ");
scanf("%d",&numbers.number1);
printf("Enter second number:");
scanf("%d",&numbers.number2);
void (*foo)(numbers); //pointer to function declaration
foo = &Sum_operator;
(*foo)(numbers);
}
答案 0 :(得分:2)
使用参数type:
声明这样的函数指针void (*foo)(struct sum_elements);
答案 1 :(得分:1)
为了方便起见,您可以为函数指针的类型添加typedef。 e.g。
typedef void (*MYFUNC)(struct sum_elements) ;
MYFUNC foo = &Sum_operator ;
foo( numbers ) ;
答案 2 :(得分:0)
声明pointer to a function时,必须提供重新设定的类型和参数类型。该指针不能指向具有不同返回类型或参数类型的函数。
在您的情况下,声明必须如下:
void (*functionPointer)(struct sum_elements);