3

我有这样的功能:

void cleanup_module(void)
{
    /* 
     * Unregister the device 
     */
    if(unregister_chrdev(Major, DEVICE_NAME)<0) 
        printk(KERN_ALERT "Error in unregister_chrdev:\n");
}

和错误:

/home/student/kernel/hello.c: In function ‘cleanup_module’:
/home/student/kernel/hello.c:39:2: error: void value not ignored as it ought to be

这一行是带有 if 语句的行。你知道我做错了什么吗?

4

3 回答 3

4

这意味着 thatunregister_chrdev没有返回值(它是void),但您已将其放入 if 中。也就是说,您正在使用一个应该被忽略的 void 值。因此出现错误消息。

查看这个问题,它询问为什么返回值更改为 void。

于 2012-06-15T09:12:25.057 回答
2

基于 unregister_chrdev(),用于返回 anint但其返回类型更改为void,因为返回的值没有意义。if从发布的代码中完全删除:

unregister_chrdev(Major, DEVICE_NAME);
于 2012-06-15T09:12:09.413 回答
1

该错误表明该unregister_chrdev()函数是一个void类型函数,即它不返回任何内容。但是,您正在使用运算符检查其返回值<

于 2012-06-15T09:12:44.293 回答