我看到这个方法可以使用C11中的匿名结构体来实现某种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;
之后加上一些内容。 - David C. Rankingcc -std=c++11
,它将支持真正的继承... - Bo Persson