C错误:存储大小未知

时间:2013-12-07 04:42:23

标签: c

我正在尝试创建一个在链接列表中使用的结构,如下所示:

#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'。我尝试了几种不同的结构声明格式,没有运气。有人能告诉我我做错了吗?谢谢!

2 个答案:

答案 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

首先声明然后使用它。另一个可能是一些法术不匹配所以尝试使用这个