【问题标题】:Compiling error when calling a function pointer in C在 C 中调用函数指针时出现编译错误
【发布时间】:2016-08-08 21:27:20
【问题描述】:

我正在编写一个程序,该程序调用一个函数指针,该指针指向另一个文件中的函数。当我编译程序时,我从编译器收到一条错误消息,说有一个预期的表达式。 这是产生的四个错误之一:

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);
}

【问题讨论】:

    标签: c function-pointers


    【解决方案1】:

    调用函数时,需要提供合适的值作为参数。来电

    (*get_num)(int *, int *);
    

    不要那样做。

    使用

    (*get_num)(items, &amount);
    

    或更具可读性:

    get_num(items, &amount);
    

    对其他调用进行类似的更改。

    (*sort_num)(items, amount);
    (*print_num)(items, amount);
    (*search_num)(items, amount);
    

    【讨论】:

    • 谢谢你,这帮助我摆脱了错误消息。但是,现在当我编译程序时,编译器给了我这样的消息:Undefined symbols for architecture x86_64: 这是什么意思,我该如何解决?
    • @JWu,你定义了函数getnumprintnumsortnumsearchnum吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    相关资源
    最近更新 更多