【发布时间】:2019-11-19 12:12:06
【问题描述】:
例如,我有一个给定的结构X。现在,我还定义了A、B 和C。它们都包含与X 完全相同的属性,但还包含其他属性。
我看过以下问题:Extending a struct in C
我不想使用这个嵌套的东西,而且我从不使用X 本身。它只是出现在所有其他结构中的属性的集合。
我正在考虑将X 的内容定义为宏并将其用于其他结构的定义中。例如:
#ifndef
#define X \
char *some_char_arr; \
int *some_int_arr;
#endif
struct A {
X
int specific_to_a[10];
}
struct B {
X
int specific_to_b[20];
}
struct C {
X
int specific_to_c[30];
}
这是一个适当的解决方案还是有更好的解决方案?或者这种方法有什么问题吗?
【问题讨论】:
-
所以他们实际上根本没有“扩展”那个“基础”,只是碰巧有一些相同的成员变量?
-
@underscore_d 是的,你可以这样说。它们只共享“相同”的成员变量。最后
A、B和C相互没有关系,独立使用。 -
你能有一个包含联合的结构吗?