对此有何建议? 根据其他例子,大多数都是这样做的。我不确定为什么这会给我一个错误。
是因为我必须先把它叫到某个地方吗?
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;
}
答案 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;
};