Объявить память, чтобы структурировать в C
У меня есть структура 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 ответа
Ошибки 1, 2, 4 и 5 вызваны отсутствием ;
в конце вашего объявления структуры. Это должно быть:
struct abc {
some variaables
and functions
};
3 ошибка вызвана отсутствием включения include/linux/slab.h
файл. Вы должны добавить приведенный ниже файл в начало вашего файла исходного кода:
#include < linux/slab.h>
# удалите пробел перед "linux"
Забыв о том факте, что вы используете kmalloc вместо malloc по любой причине, вы не можете использовать sizeof(struct abc), когда в текущем файле обработки вы не знаете размер abc struct. Либо объявите abc struct в заголовочном файле, а затем включите ее в ваш текущий файл, либо объявите / определите структуру в вашем текущем файле... Компилятору необходимо знать размер объекта, для которого вы хотите выделить пространство, форвард декларации недостаточно.