3

I've got such a function:

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

and error:

/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

This line is the one with if statement. Do you know what I'm doing wrong?

4

3 に答える 3

4

これは、 にunregister_chrdevは戻り値がないことを意味します (それはvoidです) が、if に入れました。つまり、無視されるべき void 値を使用しています。したがって、エラーメッセージ。

戻り値が void に変更された理由を尋ねるこの質問を確認してください。

于 2012-06-15T09:12:25.057 に答える
2

this に基づいてunregister_chrdev()を返していましたが、戻り値が無意味だったため、戻り値のint型が に変更されました。投稿されたコードから完全にvoid削除します。if

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

このエラーは、unregister_chrdev()関数がvoid型関数であること、つまり何も返さないことを示しています。<ただし、演​​算子で戻り値をチェックしています。

于 2012-06-15T09:12:44.293 に答える