未知的类型名称C.

J. *_*nes 5 c

我知道在使用它们之前必须先定义它们,但是我得到了一个"未知类型名称错误".

这是我的Node定义:

struct Node  {
    position* p;
    struct Node* next;
    struct Node* prev;
};
Run Code Online (Sandbox Code Playgroud)

这是我的声明(第96行):

Node* hashtable[HashArraySize];
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

P1.c:96:1: error: unknown type name ‘Node’
 Node* hashtable[HashArraySize];
Run Code Online (Sandbox Code Playgroud)

das*_*ght 9

与将struct标记视为新类型名称的C++不同,如果您希望在Node不使用时使用C,则需要显式的typedef struct:

typedef struct Node Node;
Run Code Online (Sandbox Code Playgroud)

或者,您可以struct Node在声明中使用:

struct Node* hashtable[HashArraySize];
Run Code Online (Sandbox Code Playgroud)

  • @ A.Allen如果有多个函数采用`struct Node`,那么`typedef`就更清晰了.如果只有一个或两个地方需要使用`Node`,那么`struct Node`会稍微清晰一些.重要的是决定一种方法,并对所有的结构进行一致的处理. (2认同)

Ren*_*ros 6

更改Node* hashtable[HashArraySize];struct Node* hashtable[HashArraySize];

要么

typedef struct Node  {
    position* p;
    struct Node* next;
    struct Node* prev;
} Node;
Run Code Online (Sandbox Code Playgroud)