2015-03-23 2 views
0

У меня возникли проблемы с компиляцией моего 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); 
} 

Я смотрел этот вопрос, но ничего, кажется, исправить вопрос, может ли кто-нибудь помочь?

Спасибо!

ответ

0

book является неполным типом в вашей основной рутине. Вы не можете использовать sizeof.

Смежные вопросы