我有这样的功能:
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语句。你知道我做错了吗?
答案 0 :(得分:3)
这意味着unregister_chrdev
没有返回值(void
),但您已将其放入if中。也就是说,您使用的void值应该被忽略。因此错误信息。
查看this question,询问返回值变为无效的原因。
答案 1 :(得分:2)
基于this unregister_chrdev()
用于返回int
,但其返回类型已更改为void
,因为返回的值无意义。完全从发布的代码中删除if
:
unregister_chrdev(Major, DEVICE_NAME);
答案 2 :(得分:1)
该错误表示unregister_chrdev()
函数是void
类型函数,即它不返回任何内容。但是,您正在使用<
运算符检查其返回值。