我有一个可能有2个或4个成员的结构,具体取决于预处理器定义。
struct foo {
int m1;
int m2;
#ifdef MORE_MEMBERS
int m3;
int m4;
#endif
}
我有以foo.m3
和foo.m4
为参数的函数。因此,当MORE_MEMBERS
未定义时,我收到编译错误。
我试图避免在每个函数调用时添加#ifdef
。如果m3
未定义,是否有某种方法可以使m4
和MORE_MEMBERS
成为别名/假人?我仍然希望结构大小等于sizeof(int) * 2
。
答案 0 :(得分:0)
我同意Iharob,这是可怕的代码。你所追求的并不是很清楚,但听起来你可以使用union
:
struct foo
{
int a;
int b;
};
union bar
{
struct foo m1m2;
struct foo m3m4;
};
void f(union bar *x)
{
printf("%d", x->m1m2.a);
printf("%d", x->m3m4.b);
}