由于以下错误而编译我的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);
}
我已经查找了这个问题,但似乎没有解决问题,有人可以帮忙吗?
谢谢!
答案 0 :(得分:0)
book
在您的主要例程中是不完整的类型。您无法在其上使用sizeof
。