【发布时间】:2018-03-28 19:27:31
【问题描述】:
我看到this way 在 C11 中使用匿名struct 实现某种struct 继承,并想尝试一下。这是我所拥有的:
struct struct_a {
int aa;
};
struct struct_b {
struct struct_a;
int bb;
};
int main(void)
{
volatile struct struct_b my_b;
my_b.aa = 5; /* not a member of my_b */
my_b.bb = 6;
}
来自 gcc 的结果:
$ gcc -std=c11 struct_extend.c
struct_extend.c:11:20: warning: declaration does not declare anything
struct struct_a;
^
struct_extend.c: In function ‘main’:
struct_extend.c:18:9: error: ‘volatile struct struct_b’ has no member named ‘aa’
my_b.aa = 5; /* not a member of my_b */
相关:
$ gcc --version
gcc (Debian 6.3.0-18) 6.3.0 20170516
这不是在我的编译器中实现的,还是我做错了?
【问题讨论】:
-
在
struct struct_b声明中的struct struct_a;之后需要一些东西。 -
also related .. 底线:为了确保您的代码毫无疑问符合要求,不幸的是,您必须使用非常冗长的形式。
-
如果你使用
gcc -std=c++11它支持真正的继承...
标签: c inheritance gcc struct c11