c中的函数指针用法

时间:2010-12-24 20:56:04

标签: c

#include<stdio.h>
struct file{
        int a;
        int b;
        int (*fp) (int ,int);
        };
static int sum(int a, int b)
{
        return(a+b);
}
void main()
{
        struct file var;


        int sum1=0;

        var.fp=&sum;
        sum1=fp(2,4);
        printf("\nsum is  %d ",sum1);
}

如何调用函数.. ??我收到一个错误称为fp的未定义引用.. ???

3 个答案:

答案 0 :(得分:6)

由于它是结构的一员,你必须对其进行限定:

sum1 = var.fp( 2, 4 );

答案 1 :(得分:6)

您的意思是sum1 = var.fp(...)sum1 = (*var.fp)(...),但您键入了fp(...)。 C隐式定义了一个外部fp()供您调用。编译器必须这样做才能编译遗留的C代码。

使用cc -Wall ...为缺少的前向声明生成错误。

答案 2 :(得分:2)

您是否尝试过更改:

  

SUM1 = FP(2,4);

要:

  

SUM1 = var.fp(2,4);

相关问题