#include <stdio.h>
void getSum();
void getDifference();
typedef void (*functionPtr)();
// assign the function's address
functionPtr arrayFp[2] = {getSum, getDifference};
struct true {
int a;
int b;
functionPtr arrayFp[2]; //syntax may be wrong
} w = { 5, 6, arrayFp[0] };
int main() {
w.arrayFp[0]; //syntax is wrong
return 0;
}
void getSum() {
printf("I am the greatest");
}
void getDifference() {
printf("I am not the greatest");
}
答案 0 :(得分:2)
初始化结构时,您当前使用第一个函数指针而不是实际数组初始化数组。实际上,由于结构包含一个数组,您需要初始化数组的实际成员,或者将其更改为指针。
然后,当您想要调用它时,可以将函数指针用作普通函数。
所以对于结构,要么
struct
{
int a;
int b;
functionPtr arrayFp[2];
} w = {
5, 6, { getSum, getDifference }
};
或做
struct
{
int a;
int b;
functionPtr *arrayFp;
} w = {
5, 6, arrayFp
};
注意:请勿使用符号true
作为名称,因为如果您包含<stdbool.h>
,则可能会对其进行定义。