【问题标题】:invalid use of undefined type ‘struct book_implementation’ [duplicate]无效使用未定义类型“struct book_implementation”[重复]
【发布时间】: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


    【解决方案1】:

    book 是主程序中的不完整类型。你不能在上面使用sizeof

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 1970-01-01
      • 2022-09-25
      • 1970-01-01
      • 2014-12-13
      相关资源
      最近更新 更多