Объявить память, чтобы структурировать в 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 в заголовочном файле, а затем включите ее в ваш текущий файл, либо объявите / определите структуру в вашем текущем файле... Компилятору необходимо знать размер объекта, для которого вы хотите выделить пространство, форвард декларации недостаточно.

Другие вопросы по тегам