C typedef冲突

时间:2014-09-19 04:51:49

标签: c struct typedef conflict

所以我试图构建一个B树,使用两种类型的节点,单个密钥节点(kNode)和包含基于订单大小(sibNode)的多个kNode的超级节点。我一直遇到的问题是,为了使这个设置工作,我需要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;

1 个答案:

答案 0 :(得分:4)

定义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;