我看到this way在C11中實現某種struct
繼承與匿名struct
,並且想試用它。以下是我有:從GCCC11結構繼承與匿名結構
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 -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
這難道不是在我的編譯器實現的,還是我做錯了?
的可能的複製[什麼是匿名結構和聯合的有用的C11?](https://stackoverflow.com/questions/8932707/what-are-anonymous-structs-and-unions-useful-for -in-c11) –
在'struct struct_b'聲明中'struct struct_a;'之後需要一些東西。 –
[也與此相關](https://stackoverflow.com/a/44524573/2371524)..底線:爲了確保您的代碼毫無疑問符合您的要求,您必須使用非常詳細的表單,不幸的是。 –