2017-09-13 258 views
-4

我声明一个节点,但引发以下错误错误:未知类型名称“节点”

error: unknown type name 'node'

#include <stdio.h> 

typedef struct node 
{ 
    int info; 
    node *sig; //<-- error: unknown type name 'node' 
} nodeL; 

int main(void) { 
    nodeL n; 
    printf("%x\n", n.info); 

    return 0; 
} 

我该如何解决呢?

+4

你的结构名称是'nodo',并且你声明'node'。 –

+0

这是一个简单的印刷错误,所以应该关闭。 –

回答

-1
typedef struct nodo 
{ 
    int info; 
    struct nodo *sig; // Rather than: node *sig; 
} nodeL; 

看起来你的结构名称node是你在结构中引用的内容。 nodo不是node

或许有一种误解,认为nodo(或node)是C类型。这不是一种类型。但是struct nodo在问题代码中定义。

+0

你的答案只是代码,没有解释为什么你改变了你已经改变的东西 –

1

您必须记住C编译器不知道什么是节点或节点(您可能在结构体名称中输入了错误),它不是C主类型。 此时nodo是一个结构类型,且必须“说”它的编译器,如:

typedef struct nodo 
{ 
    int info; 
    struct nodo *sig; 
} nodeL; 

的结构内部的属性附加伤害nodo *sig;声明了一个成员的签名是一个定义指针结构类型。