【发布时间】:2015-03-23 15:17:56
【问题描述】:
由于以下错误,我在编译 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);
}
我已经查看了问题,但似乎没有解决问题,有人可以帮忙吗?
谢谢!
【问题讨论】:
标签: c struct header-files typedef