У меня возникли проблемы с компиляцией моего C кода из-за ошибки, такие как:неправильного использования неопределенного типа «STRUCT book_implementation»
«недопустимого использование неопределенного типа„STRUCT book_implementation“»
и
«Недопустимое применение« sizeof »к неполному типу« книга »b = (книга *) malloc (DEFAULTBOOKS * sizeof (книга));
Я создал структуру и методы, используя ее в отдельном файле 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);
}
Я смотрел этот вопрос, но ничего, кажется, исправить вопрос, может ли кто-нибудь помочь?
Спасибо!