我宣佈這個結構在全球範圍內,這個結構/聯合聲明有什麼問題?
struct a{
int a;
int x;
union b{
int a;
int b;
int y;
};
};
然後宣佈裏面主要的工會,
union b a;
,這是不給任何錯誤。但是,如果在結構的定義中聲明聯合'a',如:
struct a{
int a;
int x;
union b{
int a;
int b;
int y;
}a;
};
它給出錯誤「重複的成員a」。 (我們在以前的案例中使用了'a') 爲什麼一個人工作,另一個不工作?
其次,我們怎樣才能獨立使用在struct中聲明的聯合,但不能使用任何其他整數變量,比如'x'? 就好了,我可以執行成功地追蹤:
union b z; //works in this case, BUT not if we declare 'z' with the definition.
z.y=6; //works
x=6; //gives error
(我的理解我們宣佈裏面主要的工會,但其在結構裏面定義一樣,struct.union.union_variable是有道理的,但有union.union_variable。直接讓它變得獨立,不應該像'x'一樣對待)
因爲將聯合聲明爲'a',使它成爲結構a中的另一個成員,它已經有一個名爲'a'的成員? –