我在编写的一些 C 代码上遇到了大量语法错误,我不知道为什么。我决定尝试重新创建我存储在 replit 上的项目,但它无法正常运行。我不完全确定为什么。
#ifndef HEADER_H
#define HEADER_H
// Macros
// Definitions
// Structs
typedef struct Notecard {
char* topic;
char* question;
char* answer;
}Notecard;
typedef struct List {
Notecard* list;
int length;
int capacity;
void (*insert) (List* list, struct Notecard value);
}List;
typedef struct Node {
Notecard card;
Node* next;
}Node;
typedef struct LinkedList {
Node* head;
void (*append) (LinkedList* linked, Node n);
void (*printList) (LinkedList* linked);
}LinkedList;
// Function Declarations
void insertion(List* arr, Notecard value);
void append(LinkedList linked, Node n);
void printList(LinkedList linked);
#endif // !HEADER_H
它给我的巨大列表中的第一个错误是说"void (*insert( (List* list,..ect 需要在列表*后使用分号。这是 V 的问题吗?
尚未定义List*
,因为在执行行void (*insert) (List* list, struct Notecard value);
时您仍在其定义范围内。因此,List* list
将不起作用。
你仍然必须把struct List* list
放在那里才能让它工作。
您好,我编译了您的代码,下面是它应该的样子
#ifndef HEADER_H
#define HEADER_H
// Macros
// Definitions
// Structs
typedef struct Notecard {
char* topic;
char* question;
char* answer;
}Notecard;
typedef struct List {
Notecard* list;
int length;
int capacity;
void (*insert) (struct List* list, struct Notecard value);
}List;
typedef struct Node {
Notecard card;
struct ode* next;
}Node;
typedef struct LinkedList {
Node* head;
void (*append) (struct LinkedList* linked, Node n);
void (*printList) (struct LinkedList* linked);
}LinkedList;
// Function Declarations
void insertion(List* arr, Notecard value);
void append(LinkedList linked, Node n);
void printList(LinkedList linked);
#endif // !HEADER_H