C- Linux模块__ must_check注释



我正在学习有关Linux内核模块开发的知识。我阅读文章和教程,找到了一个网站,该网站为简单的炭设备提供源代码。

在代码中,__must_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;
}

__must_check的实用程序是什么?这是我发现使用此使用的唯一代码。

__must_check定义为:

#define __must_check __attribute__((warn_unused_result))

引用来自共同函数属性

如果使用此属性的函数的呼叫者不使用其返回值,则warn_unused_result属性会发出警告。这对于不检查结果的功能很有用,要么是安全问题,要么是一个错误,例如realloc

这也应用于Clang和Intel编译器。

该宏要求编译器是否使用返回值,请发出警告。这对于函数返回值很重要,以指示成功或失败(例如scanfprintf)或功能返回记忆(例如mallocrealloc