c中的函数指针用法

kil*_*nda 2 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);
}
Run Code Online (Sandbox Code Playgroud)

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

Nik*_*sov 6

由于它是结构的一员,你必须符合它的要求:

sum1 = var.fp( 2, 4 );
Run Code Online (Sandbox Code Playgroud)


Dig*_*oss 6

你想说sum1 = var.fp(...)或者sum1 = (*var.fp)(...)你打字fp(...).C隐式定义了一个外部fp()供您调用.编译器必须这样做才能编译传统的C代码.

使用cc -Wall ...产生错误缺少前置声明.