Как видно из названия, у меня есть этот код:
typedef struct Book{
int id;
char title[256];
char summary[2048];
int numberOfAuthors;
struct Author *authors;
};
typedef struct Author{
char firstName[56];
char lastName[56];
};
typedef struct Books{
struct Book *arr;
int numberOfBooks;
};
Я получаю эти ошибки от gcc:
bookstore.c:8:2: error: unknown type name ‘Author
bookstore.c:9:1: warning: useless storage class specifier in empty declaration [enabled by default]
bookstore.c:15:1: warning: useless storage class specifier in empty declaration [enabled by default]
bookstore.c:21:2: error: unknown type name ‘Book
bookstore.c:23:1: warning: useless storage class specifier in empty declaration [enabled by default]
Если я изменю typedefs следующим образом:
typedef struct{
char firstName[56];
char lastName[56];
} Author;
Тогда никаких предупреждений и ошибок не возникает. Обыскав http://www.amazon.com/C-Programming-Language-2nd-Edition/dp/0131103628 и пару часов погуглив, я не могу понять, почему первая реализация не сработает.