作者Arim (Arim5566)
看板C_and_CPP
標題[問題] 關於incomplete type
時間Sun May 29 20:57:36 2011
各位板友好
假如我宣告了一個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