我已经为我的模块开发了 C 代码,但是当我尝试编译它时,出现错误。
这是程序中存在错误的部分:
ssize_t exer_read(struct file *pfile, char __user *buffer, size_t length, loff_t *offset) {
struct file *f = pfile->private_data;
enum { MAX_BUF_SIZE = 4096 };
size_t buf_size = 0;
char *buf = NULL;
ssize_t total = 0;
ssize_t rc = 0;
struct input_event ev[buf_size];
int yalv;
/* Allocate temporary buffer. */
if (length) {
buf_size = min_t(size_t, MAX_BUF_SIZE, length);
ev = kmalloc(buf_size, GFP_KERNEL);
if (ev == NULL) {
return -ENOMEM;
}
}
这是错误:
exer_simple_char_drv.c:77:12: error: assignment to expression with array type
ev = kmalloc(buf_size, GFP_KERNEL);
^
我不知道如何解决这个问题。有人可以帮我吗?谢谢
最佳答案
如果你想动态地为 ev
分配内存,如下所示:
ev = kmalloc(buf_size, GFP_KERNEL);
那么你希望 ev
是一个指针,而不是一个具有自动存储期限的数组:
struct input_event *ev;
关于C错误: assignment to expression with array type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58589291/