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不会编译,因为没有type
tdlnode
。试着在我的回答中用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;
};