看板 C_and_CPP 關於我們 聯絡資訊
各位板友好 假如我宣告了一個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
firejox:union裡把struct砍掉... 05/29 21:06
LPH66:你這樣寫是定義了兩個型態名 struct node 和 NODE 05/29 21:08
LPH66:所以 gcc 看不懂什麼叫 struct NODE 05/29 21:08
firejox:重點是你都typedef了所以struct node 跟NODE是一樣的東西 05/29 21:31
diabloevagto:你的NODE是變數,要宣告應該要用node型態 05/29 21:32
firejox:NODE是別名不是變數... 05/29 21:34
diabloevagto:別理我= =我搞錯了 05/29 21:35