[問題] 關於incomplete type

看板C_and_CPP作者 (Arim5566)時間14年前 (2011/05/29 20:57), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/1
各位板友好 假如我宣告了一個struct如下 typedef struct node { int data1; char * str; } NODE; 接著宣告一個union union myunion { int data; struct NODE mynode; }; 在這裡用gcc會出現 field ‘mynode’ has incomplete type 但是把它改成指標(struct NODE* mynodeOB)就可以編譯過了.. 上網找了一下資料還是看不太懂.. 我猜是因為union必須事先知道哪一個type所佔的記憶體最大 而NODE中的char *指標還沒有malloc一塊記憶體給它 造成了union不知道這一個type會有多大 所以才會造成編譯上面的錯誤? 但是我把char * str指標改成char str 還是一樣的錯誤編譯訊息 不知道為什麼會這樣 謝謝各位板友的指教 -- ~宅男的四個徵兆~ ∠□ ○ ! * \○/ ★    (○ ? ╦╦└□ " ○□═ □   □> ║║√√ ╦══╦ ∥    |\ 一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.197.57

05/29 21:06, , 1F
union裡把struct砍掉...
05/29 21:06, 1F

05/29 21:08, , 2F
你這樣寫是定義了兩個型態名 struct node 和 NODE
05/29 21:08, 2F

05/29 21:08, , 3F
所以 gcc 看不懂什麼叫 struct NODE
05/29 21:08, 3F

05/29 21:31, , 4F
重點是你都typedef了所以struct node 跟NODE是一樣的東西
05/29 21:31, 4F

05/29 21:32, , 5F
你的NODE是變數,要宣告應該要用node型態
05/29 21:32, 5F

05/29 21:34, , 6F
NODE是別名不是變數...
05/29 21:34, 6F

05/29 21:35, , 7F
別理我= =我搞錯了
05/29 21:35, 7F
文章代碼(AID): #1DuaB3A8 (C_and_CPP)