我在一个文件中有一个struct abc
struct abc {
some variaables
and functions
}
我在其他文件中使用此结构如下:
struct abc *t = kmalloc(sizeof(struct abc));
kmalloc相当于malloc
然后发生以下错误:
expected '=', ',', ';', 'asm' or '__attribute__' before 'struct'
error: variable 't' has initializer but incomplete type
warning: implicit declaration of function 'kmalloc'
invalid application of 'sizeof' to incomplete type 'struct trapframe'
storage size of 't' isn't known
我哪里错了?
答案 0 :(得分:0)
忘记你出于某种原因使用kmalloc而不是malloc的事实, 你不能在当前的处理文件中使用sizeof(struct abc),你不知道abc struct的大小。在头文件中声明abc struct,然后在当前文件中包含它,或者在当前文件中声明/定义struct ...编译器需要知道要为其分配空间的对象的大小,一个转发宣言是不够的。
答案 1 :(得分:0)
在结构声明结尾处缺少;
导致错误,导致1,2,4和5错误。必须是:
struct abc {
some variaables
and functions
};
include/linux/slab.h
文件的包含错误导致错误。您必须在源代码文件的头部添加以下文件:
#include < linux/slab.h>
#请删除“linux”之前的空格