我正在尝试创建一个在链接列表中使用的结构,如下所示:
#ifndef MYGREP_H
#define MYGREP_H
typedef struct occurrenceType Occurrence;
struct occurrenceType {
char* line;
int lineNumber;
int wordNumber;
Occurrence *next;
};
#endif
但是当我尝试使用sizeof(Occurrence)分配内存时,我收到错误“'sizeof'的无效应用程序到不完整类型'Occurrence'。我尝试了几种不同的结构声明格式,没有运气。有人能告诉我我做错了吗?谢谢!
答案 0 :(得分:2)
你的第一个struct typedef声明:
v
typedef struct occurenceType Occurrence;
^
在“occurencyType”上有一个'r'但你的定义是:
vv
struct occurrenceType {
^^
char* line;
int lineNumber;
int wordNumber;
Occurrence *next;
};
有两个'r'。
答案 1 :(得分:0)
Struct是c中的用户定义数据类型。在声明occurrence定义之前,您尝试使用它,因此在声明或定义之前,如果您尝试使用它,那么这是一个错误。你的代码应该是
#ifndef MYGREP_H
#define MYGREP_H
struct occurrenceType {
char* line;
int lineNumber;
int wordNumber;
Occurrence *next;
};
typedef struct occurrenceType Occurrence;
#endif
首先声明然后使用它。另一个可能是一些法术不匹配所以尝试使用这个