在结构中定义指针函数

Defining a pointer function inside a struct

所以我试图完成编写一个带有指针函数的结构,这就是我写的

typedef struct Coordinates {
    float x; 
    float y;
} Coord;

typedef struct Parallelograms {
        Coord upperR, lowerL;
        float base;
        float (*areaFunc)(float base, Coord upperR, Coord lowerL);
        float (*perimeter)(float base, Coord upperR, Coord lowerL);
} Parallelogram;

这是我定义函数的地方:

float area(float base, Coord upperR, Coord lowerL) {
    return (base*(upperR.y-lowerL.y));
}

然后在其他一些函数中我这样称呼它:

Parallelogram para;   
para.areaFunc = area;

唯一的问题是当我尝试打印它时

printf("Area = %.2f", array[i].area);

(数组为平行四边形对象数组) 编译时return出现这个错误:

format specifies type 'double' but the argument has type 'float ()(float, Coord, Coord)' (aka 'float ()(float, struct Coordinates, struct Coordinates)') [-Werror,-Wformat] ...printf("# Area = %.2f #\n", array[I].areaFunc);

我以为我得到了正确的指针函数,那么如何将指针函数转换为它应该 return 的实际值?

如果 arrayParallelogram 的数组:

printf("Area = %.2f", array[i].areaFunc(array[i].base, array[i].upperR, array[i].lowerL));

您当前的代码试图将函数指针打印为浮点数,这显然是错误的。您需要调用被指向的函数。