C错误: assignment to expression with array type

标签 c compiler-errors compilation

我已经为我的模块开发了 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/

相关文章:

c - C 中的基本指针?

c - 帮助将值列表插入二叉树..?

ios - 调试器未进入 appDelegate

c++ - "WARNING: Could not create empty movie file container"在 OpenCV 中是什么意思?

c# - 类型 'X' 在类型 'Y.Z' 中不存在

java编译的类包含美元符号

visual-studio-2010 - 在 Windows 7 64 位上编译 OpenCV

c - 使用 FreeIPMI API 从 IPMI 获取所有 DIMM 信息

c - 编译期间无法处理多个c文件和头文件

javascript - Webpack typescript 导入未定义