C递归typedef结构

智原安
#include <stdio.h>
#include <stdlib.h>

#define MAX_ELEMENT 100

typedef struct TreeNode{
    int weight;
    TreeNode *left_child;
    TreeNode *right_child;
} TreeNode;

typedef struct element{
    TreeNode *ptree;
    int key;
} element;

typedef struct HeapType{
    element heap[MAX_ELEMENT];
    int heap_size;
} HeapType;

我得到的错误:

error: unknown type name ‘TreeNode’
     TreeNode *left_child;
error: unknown type name ‘TreeNode’
     TreeNode *right_child;

我不明白为什么...你能解释吗?

乔纳森·莱夫勒

使用您的代码:

typedef struct TreeNode{
    int weight;
    TreeNode *left_child;
    TreeNode *right_child;
} TreeNode;

解析TreeNode该行之前,该名称是未知的} TreeNode;处理行时TreeNode *left_child;,编译器知道有一个类型struct TreeNode,但是对类型却一无所知TreeNode

您还可以使用:

typedef struct TreeNode Treenode;

struct TreeNode
{
    int weight;
    TreeNode *left_child;
    TreeNode *right_child;
};

第一行说:“存在a结构类型struct TreeNode,并且TreeNode是该类型的别名”。其余的代码行定义了struct TreeNode

或者,如其他答案所指出的,您可以使用:

typedef struct TreeNode
{
    int weight;
    struct TreeNode *left_child;
    struct TreeNode *right_child;
} TreeNode;

编译器对类型struct TreeNode足够的了解,以便能够在读取定义时处理指向该类型的指针。注释C11§6.7.2.1结构和联合说明符¶3

结构或联合不得包含具有不完整或函数类型的成员(因此,结构不得包含其自身的实例,但可以包含指向其自身的实例的指针),…

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C递归typedef结构

来自分类Dev

C中的typedef结构继承

来自分类Dev

C typedef:指向结构的指针

来自分类Dev

Typedef结构指针正确指向typedef结构(C)

来自分类Dev

初始typedef结构指针(C / C ++)

来自分类Dev

C:typedef结构名称{...};VS typedef struct {...}名称;

来自分类Dev

C:typedef结构中的函数指针

来自分类Dev

C程序中的typedef结构错误

来自分类Dev

只有typedef的c ++结构语法的含义

来自分类Dev

C中的typedef结构的malloc sizeof

来自分类Dev

C中的结构,typedef和指针

来自分类Dev

C程序中的typedef结构错误

来自分类Dev

C:Typedef结构和指针异常

来自分类Dev

分解objective-c中的typedef结构

来自分类Dev

C ++分支递归结构?

来自分类Dev

C ++递归结构比较器

来自分类Dev

在C中搜索递归数据结构

来自分类Dev

递归中的 C++ 结构返回 nullptr ?

来自分类Dev

如何递归使用typedef?

来自分类Dev

目标C-在头文件中使用typedef结构

来自分类Dev

C typedef结构中定义之前的名称用途

来自分类Dev

C-具有函数malloc的typedef结构的动态数组

来自分类Dev

具有前向声明的C结构typedef

来自分类Dev

不透明结构的C typedef编码样式

来自分类Dev

C中具有typedef结构的未知类型名称

来自分类Dev

C ++嵌套结构的typedef(metaclass)编译错误

来自分类Dev

将文件读入包含C枚举的typedef结构中?

来自分类Dev

目标C-在头文件中使用typedef结构

来自分类Dev

通过C中的引用传递typedef结构作为调用