1

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

我哪里错了?

4

2 回答 2

0

1、2、4 和 5 错误是由;struct 声明末尾的缺失引起的。肯定是:

struct abc { some variaables and functions };

3 错误是由于缺少包含include/linux/slab.h文件引起的。您必须在源代码文件的开头添加以下文件:

#include < linux/slab.h># 请去掉“linux”前面的空格

于 2014-04-07T00:44:54.273 回答
0

忘记您出于某种原因使用 kmalloc 而不是 malloc 的事实,当在当前处理文件中您不知道 abc 结构的大小时,您不能使用 sizeof(struct abc) 。在头文件中声明 abc 结构,然后将其包含在当前文件中,或者在当前文件中声明/定义结构...编译器需要知道要为其分配空间的对象的大小,前向声明是不够的。

于 2014-04-07T00:34:54.640 回答