我知道在使用它们之前必须先定义它们,但是我收到了“未知类型名称错误。”
这是我的Node
定义:
struct Node {
position* p;
struct Node* next;
struct Node* prev;
};
这是我的声明(第96行):
Node* hashtable[HashArraySize];
我收到此错误消息:
P1.c:96:1: error: unknown type name ‘Node’
Node* hashtable[HashArraySize];
答案 0 :(得分:9)
与将struct
标记视为新类型名称的C ++不同,如果您希望在没有Node
的情况下使用struct
,则C需要显式的typedef:
typedef struct Node Node;
或者,您可以在声明中使用struct Node
:
struct Node* hashtable[HashArraySize];
答案 1 :(得分:6)
将Node* hashtable[HashArraySize];
更改为struct Node* hashtable[HashArraySize];
或
typedef struct Node {
position* p;
struct Node* next;
struct Node* prev;
} Node;