在c中声明内存到struct

时间:2014-04-07 00:04:46

标签: c malloc os161 kmalloc

我在一个文件中有一个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

我哪里错了?

2 个答案:

答案 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”之前的空格