typedefed结构的未知类型错误

时间:2015-09-01 13:47:16

标签: c struct typedef

我正在尝试为书架制作一个链表,但是当我编译它时说

In file included from libreria.c:3:0:
libreria.h:8:2: error: unknown type name ‘Book’
  Book* next;
  ^

如果没有定义Book,就像。 这是头文件

#ifndef LIBRERIA_H
#define LIBRERIA_H

typedef struct Book {
    char author[50];
    char title[50];
    int year;
    Book* next;
} Book;

void newbook(Book* book);

#endif

有什么问题?

2 个答案:

答案 0 :(得分:6)

在您的结构定义中,Book的typedef尚未定义,因此您需要在该实例中使用struct Book

typedef struct Book {
    char author[50];
    char title[50];
    int year;
    struct Book* next;
} Book;

答案 1 :(得分:4)

在结构定义中,Book不是尚未的类型。您需要使用struct Book作为类型。

否则,您可以将typedef置于结构定义之前,使Book本身作为类型,如

typedef struct Book Book;
struct Book {
char author[50];
char title[50];
int year;
Book* next;
}