Недопустимое использование неопределенного типа 'struct book_implementation'
У меня проблема с компиляцией кода C из-за таких ошибок, как:
"недопустимое использование неопределенного типа" struct book_implementation ""
а также
"недопустимое применение 'sizeof' к неполному типу 'book' b = (book *) malloc (DEFAULTBOOKS * sizeof (book));"
Я создал структуру и методы, используя ее в отдельном C-файле с соответствующим заголовочным файлом, как показано ниже.
#include <stdio.h>
#include <stdlib.h>
#include "books.h"
struct book_implementation {
int bookid;
int amount;
int total;
};
//Set book IDs to books.
void setbook( book *b, long i, generator gen){
b->bookid = i;
b->total = (long)gen;
b->amount = b->total;
}
Заголовочный файл:
#ifndef BOOKS_H
#define BOOKS_H
typedef struct book_implementation book;
typedef long (*generator)();
void setbook (book *b, long i, generator gen);
#endif
Вот область основной программы, где присутствует ошибка:
#include <stdio.h>
#include <stdlib.h>
#include "books.h"
#define DEFAULTBOOKS 100
long bookgen(){
return (rand()%DEFAULTBOOKS)+1;
}
main(){
book *b;
b = (book *) malloc (DEFAULTBOOKS * sizeof (book));
for(i=0; i < DEFAULTBOOKS; i++)
setbook(&b[i], i, bookgen);
}
Я искал проблему, но, кажется, ничто не решает проблему, может кто-нибудь помочь?
Спасибо!
1 ответ
book
это неполный тип в вашей основной рутине. Вы не можете использовать sizeof
в теме.