2012-11-28 60 views
0

因此Im得到一個「行51:錯誤:提領指向不完全類型」運行此C錯誤:提領指向不完全類型

+0

經過進一步檢查,看起來錯誤來自於使用「testTree-> root」 – BBales

+0

沒有代碼顯示在文本中。 –

回答

1

當你在你的頭文件的一個定義「樹」的地方?失敗模塊的第51行可以看到該頭文件嗎?

你必須定義 「樹」 :)

=====================附錄============ ========

感謝您與您的樹「定義」更新你的信息:

// .h file 
struct AvlTreeNode; 
struct AvlTree; 
typedef struct AvlTree Tree; 
... 

但事實是 - 這些都是「不完全類型」。

你說你在模塊(.c)中定義了AvlTree和AvlTreeNode「。

問:哪個 .c翻譯單位?

問:是否在您嘗試使用之前在翻譯單元中定義了它?

問:是否用於任何其他翻譯單位?

問:爲什麼重複/冗餘/混淆typedef別名?

問:爲什麼,看在老天的份上,你不只是在你的.h文件中定義它?

+0

剛剛添加了顯示樹定義的編輯 – BBales

+0

將所有結構和typedefs的頭文件,它一切工作,謝謝! – BBales

1

testTree->root解除引用testTree,其類型爲Tree,這在任何地方都沒有定義。

+0

我更新了顯示樹被定義的位置的帖子 – BBales

1

錯誤提示您有前向聲明Tree,但不是其對應結構的完整定義。這就是爲什麼你可以聲明一個指向Tree的指針,但是你不能取消引用它的成員。

確保包含main的編譯單元在包含struct Tree定義的頭文件頂部有一個#include,這將解決此問題。

+0

我的編輯顯示了結構在哪裏以及如何聲明 – BBales