我在C中遇到的问题是我想要一系列具有来自另一个结构的基本成员的结构。 e.g。
struct foo {
int a;
void (*calculate)(struct foo *);
};
struct bar {
int a;
void (*calculate)(struct foo *);
double b;
};
void do_thing(struct foo *a)
{
a->calculate(a);
}
我遇到的问题是以下内容似乎违反了严格的别名规则。
void foo_calculate(struct foo *a)
{
struct bar *b = (struct bar*)a;
}
我想出这样做的唯一方法是在struct foo
内创建一个包含从中继承的所有结构的联合。有没有更简单的方法来实现这一目标?