2012-11-28 69 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