类型的不完全定义

时间:2015-10-22 16:06:53

标签: c

对此有何建议? 根据其他例子,大多数都是这样做的。我不确定为什么这会给我一个错误。

是因为我必须先把它叫到某个地方吗?

typedef struct tldnode TLDNode;
char *tldnode_tldname(TLDNode *node);
long tldnode_count(TLDNode *node);


struct TLDNode
{
    char* key;
    long nodeCount;
};

char *tldnode_tldname(TLDNode *node){
     return node->key;
}

long tldnode_count(TLDNode *node){
    return node->nodeCount;
}

enter image description here

2 个答案:

答案 0 :(得分:2)

您需要使用 void someFunc(struct TLDNode *); 撰写struct,因为没有TLDNode类型,但struct TLDNode存在。

如果您仍想使用TLDNode,请使用 typedef

typedef struct
{
    char* key;
    long nodeCount;
}TLDNode;

<强>更新

关于您的上次更新,您首先可以声明

typedef struct {
    char* key;
    long nodeCount;
}tldnode;

只有这样你才typedef tldnode TLDNode

答案 1 :(得分:2)

typedef struct tldnode TLDNode;

TLDNode定义为struct tldnode的捷径。

您从未在任何地方定义struct tldnode

在下面,您定义

struct TLDNode
{
    char* key;
    long nodeCount;
};

不是struct tldnode

你想要像

这样的东西
typedef struct TLDNode___
{
    char* key;
    long nodeCount;
} TLDNode;

定义结构并为该类型提供快捷方式名称。

编辑:根据您在其他答案中的评论,您正在寻找的快速简单的答案是:

更改

struct TLDNode
{
    char* key;
    long nodeCount;
};

struct tldnode
{
    char* key;
    long nodeCount;
};