在C中调用函数指针时编译错误
Compiling error when calling a function pointer in C
我正在编写一个程序,该程序调用一个指向另一个文件中的函数的函数指针。当我编译程序时,我从编译器收到一条错误消息,说有一个预期的表达式。
这是产生的四个错误之一:
error: expected expression
(*get_num)(int *, int *);
编译器说表达式应在 (
和 int
之间。
其他三个函数指针调用中的每一个都显示相同的错误。
我是否正确调用了函数指针?
#include <stdio.h>
int getnum(int items[], int *amount);
int sortnum(int items[], int amount);
int printnum(int items[], int amount);
int searchnum(int items[], int amount);
int (*get_num)(int *, int *);
int (*sort_num)(int *, int);
int (*print_num)(int *, int);
int (*search_num)(int *, int);
int main()
{
int items[maxitem];
int amount;
get_num = getnum;
sort_num = sortnum;
print_num = printnum;
search_num = searchnum;
(*get_num)(int *, int *);
(*sort_num)(int, int);
(*print_num)(int, int);
(*search_num)(int, int);
}
调用函数时,需要提供合适的值作为参数。来电
(*get_num)(int *, int *);
不要那样做。
使用
(*get_num)(items, &amount);
或更具可读性:
get_num(items, &amount);
对其他调用进行类似的更改。
(*sort_num)(items, amount);
(*print_num)(items, amount);
(*search_num)(items, amount);
我正在编写一个程序,该程序调用一个指向另一个文件中的函数的函数指针。当我编译程序时,我从编译器收到一条错误消息,说有一个预期的表达式。 这是产生的四个错误之一:
error: expected expression
(*get_num)(int *, int *);
编译器说表达式应在 (
和 int
之间。
其他三个函数指针调用中的每一个都显示相同的错误。
我是否正确调用了函数指针?
#include <stdio.h>
int getnum(int items[], int *amount);
int sortnum(int items[], int amount);
int printnum(int items[], int amount);
int searchnum(int items[], int amount);
int (*get_num)(int *, int *);
int (*sort_num)(int *, int);
int (*print_num)(int *, int);
int (*search_num)(int *, int);
int main()
{
int items[maxitem];
int amount;
get_num = getnum;
sort_num = sortnum;
print_num = printnum;
search_num = searchnum;
(*get_num)(int *, int *);
(*sort_num)(int, int);
(*print_num)(int, int);
(*search_num)(int, int);
}
调用函数时,需要提供合适的值作为参数。来电
(*get_num)(int *, int *);
不要那样做。
使用
(*get_num)(items, &amount);
或更具可读性:
get_num(items, &amount);
对其他调用进行类似的更改。
(*sort_num)(items, amount);
(*print_num)(items, amount);
(*search_num)(items, amount);