比较来自世界各地的卖家的域名和 IT 服务价格

错误:不允许指向不完整类型类的指针

当三元树实现时,我在这个阶段在一个死胡同:


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

typedef struct tnode *Tptr;
typedef struct node
{
char splitchar;
Tptr lokid,eqkid,hikid;

}Tnode;

int research/Tptr p,char *s/
{
if /!p/ return 0;
if /*s<p->
}

int main//{
return 0;
}


当我旁边移动鼠标图标时
p

, 它向我展示了一个红色和错误:


pointer to incomplete class type is not allowed


我的问题正是什么是不完整的课程? 请帮帮我,谢谢。
</p-></stdlib.h></string.h></stdio.h>
已邀请:

董宝中

赞同来自:

不完整的课程 /或类型/ - 此类型被声明向前,但未定义。 就像你一样
tnode

.
可能你应该替换
node


tnode

作为您示例中的结构标签,以获得所需的内容。

二哥

赞同来自:

你得分
Tptr

作为
struct tnode *

, 但
tnode

未定义,甚至没有宣布。 也许你想打电话给我们的结构
node


tnode

?

BTW, 在未来有一种简单的方法可以防止它......


typedef struct tnode {
...
} Tnode, *Tptr;


在这个时刻
Tptr

即使您更改名称,也始终是一种新型别名
tnode

在别的东西上。

三叔

赞同来自:

"incomplete class type" 假设您的编译器相信这段代码 C++, 不是代码 C, 只要 C 它没有课程。

请注意字符串 5 做。
Tptr

名称
struct tnode *

- 命名结构的指示 "tnode", 但不是 "node", 但 "tnode", 小写字母 t, 结。 线 6 推出 typedef, 然后开始确定命名的结构 "node", 不是 "t", 只是 "node". 线 11 完成定义 "struct node", 然后为之前提供名称 typedef: "Tnode", 大写 T, node.

你有四个不同的名字,现在: Tptr, 类型 tnode, 类型 tnode, 和结。 带小写的 "t", 从没 "completed", 那是什么 "incomplete type" /但不是课堂因为 C 没有课程/.

要回复问题请先登录注册