在 C 中是否可能有一个结构或函数联合?
Is it possible in C to have a struct or union of functions?
有没有什么办法,无论是 union、struct 还是其他东西,都有一组函数?
typedef struct {
//ERROR
int sqr(int i) {
return i * i;
}
//ERROR
int cube (int i) {
return i * i * i;
}
} test;
结构体中的字段可以是函数指针:
struct Interface {
int (*eval)(int i);
};
您不能在结构体中定义函数,但可以将具有相同签名的函数分配给结构字段:
int my_sqr(int i) {
return i * i;
}
int my_cube(int i) {
return i * i * i;
}
struct Interface squarer = { my_sqr };
struct Interface cuber = { my_cube };
然后像普通函数一样调用字段:
printf("%d\n", squarer.eval(4)); // "16"
printf("%d\n", cuber.eval(4)); // "64"
有没有什么办法,无论是 union、struct 还是其他东西,都有一组函数?
typedef struct {
//ERROR
int sqr(int i) {
return i * i;
}
//ERROR
int cube (int i) {
return i * i * i;
}
} test;
结构体中的字段可以是函数指针:
struct Interface {
int (*eval)(int i);
};
您不能在结构体中定义函数,但可以将具有相同签名的函数分配给结构字段:
int my_sqr(int i) {
return i * i;
}
int my_cube(int i) {
return i * i * i;
}
struct Interface squarer = { my_sqr };
struct Interface cuber = { my_cube };
然后像普通函数一样调用字段:
printf("%d\n", squarer.eval(4)); // "16"
printf("%d\n", cuber.eval(4)); // "64"