C Linux模块必须检查注释

C Linux模块必须检查注释,c,linux-kernel,linux-device-driver,C,Linux Kernel,Linux Device Driver,我正在学习Linux内核模块开发。我阅读了文章和教程,发现了一个为简单的字符设备提供源代码的网站 在代码中,一个功能使用了一个\u must\u check 以下是原型: __must_check int register_device(void); 这就是功能: int register_device(void) { int result = 0; printk( KERN_NOTICE "Simple-driver: register_device() is called." )

我正在学习Linux内核模块开发。我阅读了文章和教程,发现了一个为简单的字符设备提供源代码的网站

在代码中,一个功能使用了一个
\u must\u check

以下是原型:

__must_check int register_device(void);
这就是功能:

int register_device(void)
{
  int result = 0;

  printk( KERN_NOTICE "Simple-driver: register_device() is called." );

  result = register_chrdev( 0, device_name, &simple_driver_fops );
  if( result < 0 )
  {
     printk( KERN_WARNING "Simple-driver:  can\'t register character device with errorcode = %i", result );
     return result;
  }

  device_file_major_number = result;
  printk( KERN_NOTICE "Simple-driver: registered character device with major number = %i and minor numbers 0...255"
              , device_file_major_number );

  return 0;
}
int寄存器\u设备(无效)
{
int结果=0;
printk(KERN_注意“调用了简单驱动程序:register_device()”);
结果=寄存器chrdev(0、设备名和简单驱动程序);
如果(结果<0)
{
printk(KERN_警告“简单驱动程序:无法使用错误代码=%i注册字符设备”,结果);
返回结果;
}
设备\文件\主要\编号=结果;
printk(KERN_)注意“简单驱动程序:注册的字符设备,主要编号=%i,次要编号0…255”
,设备文件号);
返回0;
}

必须检查的功能是什么?这是我找到的唯一一个使用此选项的代码。

\u必须\u检查
定义为:

#define __must_check __attribute__((warn_unused_result))
引自

如果具有此属性的函数调用方不使用其返回值,则
warn\u unused\u result
属性会导致发出警告。这对于不检查结果是安全问题或始终是错误的函数非常有用,例如
realloc

这也适用于和


如果未使用返回值,此宏要求编译器发出警告。这对于函数返回值表示成功或失败很重要,例如
scanf
printf
,或者函数返回内存,例如
malloc
realloc

那么好,但它有什么用呢?@丹恩