C 类型定义冲突

标签 c struct typedef conflict

所以我试图构建一个 B 树,使用两种类型的节点,单独的关键节点 (kNode) 和包含基于订单大小的多个 kNode 的 super 节点 (sibNode)。我一直遇到的问题是,要使此设置正常工作,我需要 sibNode 中的 kNode 指针(例如 pkey 和 smallestPnt)以及 kNode 中的 sibNode 指针(例如 nxtkey 和 child)。但是,无论我先放哪个 typedef,都会为这些指针返回错误未知类型(按此顺序返回的示例:错误:未知类型名称'kNode')。如果有人可以就如何避免此错误给我一些建议,我们将不胜感激。

typedef int keyT;

//B-Tree Node typdef
typedef struct
{
int size;
int cursor;
kNode* pkey;
kNode* smallestPnt;

}sibNode;

//key Node typedef
typedef struct 
{

keyT* key;
sibNode* nxtkey;
sibNode* child;

}kNode;

最佳答案

当定义了sibNode类型时,还没有定义kNode类型。

像这样使用前向声明:

struct kNode;      //this is forward declaration

typedef struct
{
    int size;
    int cursor;
    struct kNode* pkey;         //here
    struct kNode* smallestPnt;  //here
}sibNode;

typedef struct kNode       //and here
{
    keyT* key;
    sibNode* nxtkey;
    sibNode* child;
}kNode;

关于C 类型定义冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25926587/

相关文章:

c - 用 C 读取文本文件,在多个点处停止,将其分成多个部分

使用套接字复制结构

c - 将指针传递给嵌套函数

c - 函数如何在 C 中实际返回结构变量?

C++:如何洗牌动态指针数组?

c++ - 在类中存储 typedef 构造函数

C++ Typedef to const value 指针的常量地址

c - C中的括号怎么写?

c - 在 if 语句中声明变量 (ANSI C)

c - typedef string c 赋值给位置