基于对将变量类型作为函数参数传递的问题的答案:
我可以写这样的东西:
enum {
TYPEA,
TYPEB,
TYPEC,
TYPED
} TYPE;
void foo(TYPE t, void* x){
switch(t){
case TYPEA:
struct A* y = (struct A*)x;
//do something with a member named "next"
break;
case TYPEB:
struct B* y = (struct B*)x;
//do something with a member named "next"
...
}
}
有什么办法可以避免多次重写“有一个名为 next 的成员的东西”?
我们假设 A 和 B 中的“下一个”在每个结构中的相对内存位置不同。