C 类型定义不完整
有什么建议吗? 根据其他例子,大多数都是这样做的。我不确定为什么这会给我一个错误 是不是因为我得先打个电话C 类型定义不完整,c,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 *no
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;
}
您需要编写
void someFunc(struct TLDNode*)由于没有类型TLDNode
,但存在struct TLDNode
,因此使用struct
进行编码>
如果仍要仅使用TLDNode
,请使用typedef:
更新:
关于您最近的更新,您可以首先声明
typedef struct {
char* key;
long nodeCount;
}tldnode;
只有这样才能执行typedef tldnode tldnode
typedef结构tldnode tldnode代码>
将TLDNode
定义为struct TLDNode
的捷径
您从未在任何地方定义过struct tldnode
在下面,你定义
struct TLDNode
{
char* key;
long nodeCount;
};
它不是结构tldnode
你想要什么
typedef struct TLDNode___
{
char* key;
long nodeCount;
} TLDNode;
定义结构并为类型指定快捷方式名称
编辑:根据您在另一个答案中的评论,您正在寻找的快速简单的答案是:
改变
struct TLDNode
{
char* key;
long nodeCount;
};
到
你可能已经用不同的语言来查看例子,比如C++。我的坏,我更新了我的问题。是的,我相信我已经有了typedef,但是仍然有错误,你的typedef不会编译,因为没有typetdlnode
。试着在我的回答中用typedef替换你的typedef和struct声明。用不同的类型重新定义typedef('struct TLDNode'vs'struct TLDNode')@FlyingAtom,等等,是TLDNode
和TLDNode
不同的类型吗?@FlyingAtom,你在定义typedef'ing时不需要任何名称(很好的动词,不是吗?)。您可以执行typedef struct{inta;}Name代码>仅此而已。
struct TLDNode
{
char* key;
long nodeCount;
};
struct tldnode
{
char* key;
long nodeCount;
};