использование указателя на функцию в c - PullRequest
2 голосов
/ 24 декабря 2010
#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 ]

6 голосов
/ 25 декабря 2010

Вы хотели сказать sum1 = var.fp(...) или sum1 = (*var.fp)(...), но набрали fp(...). C неявно определил внешний fp () для вашего вызова. Компилятор должен сделать это для того, чтобы скомпилировать устаревший код на языке C.

Используйте cc -Wall ... для генерации ошибок для пропущенных предварительных объявлений.

6 голосов
/ 24 декабря 2010

Поскольку он является членом структуры, вы должны квалифицировать его:

sum1 = var.fp( 2, 4 );
2 голосов
/ 24 декабря 2010

Вы пытались изменить:

sum1 = fp (2,4);

To:

sum1 = var.fp (2,4);

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...