fmt, ##__VA_ARGS__

这篇具有很好参考价值的文章主要介绍了fmt, ##__VA_ARGS__。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

//1
DRM_DEBUG("%lu %d %p\n", map->size, drm_order(map->size), map->handle);
//2
#define DRM_UT_CORE         0x01
#define DRM_NAME    "drm"      /**< Name in kernel, /dev, and /proc */
#define DRM_DEBUG(fmt, args...)                        \
    do {                                \
        drm_ut_debug_printk(DRM_UT_CORE, DRM_NAME,         \
                    __func__, fmt, ##args);        \
    } while (0)
#define DRM_DEBUG_DRIVER(fmt, args...)                    \
      do {                                \
          drm_ut_debug_printk(DRM_UT_DRIVER, DRM_NAME,        \
                      __func__, fmt, ##args);        \
      } while (0)
//4
module_param_named(debug, drm_debug, int, 0600);
unsigned int drm_debug = 0;    /* 1 to enable debug output */
EXPORT_SYMBOL(drm_debug);
//3
void drm_ut_debug_printk(unsigned int request_level,
             const char *prefix,
             const char *function_name,
             const char *format, ...)
{
    va_list args;

     if (drm_debug & request_level) {
         if (function_name)
             printk(KERN_DEBUG "[%s:%s], ", prefix, function_name);
         va_start(args, format);
         vprintk(format, args);
         va_end(args);
     }
}
EXPORT_SYMBOL(drm_ut_debug_printk);

log_error(ls, "dlm_posix_lock: op on list %llx", (unsigned long long)number);
log_print("plock device version mismatch: "
      "kernel (%u.%u.%u), user (%u.%u.%u)",
      DLM_PLOCK_VERSION_MAJOR,
      DLM_PLOCK_VERSION_MINOR,
      DLM_PLOCK_VERSION_PATCH,
      info->version[0],
      info->version[1],
      info->version[2]);
#define log_print(fmt, args...) \
    printk(KERN_ERR "dlm: "fmt"\n" , ##args)
#define log_error(ls, fmt, args...) \
    printk(KERN_ERR "dlm: %s: " fmt "\n", (ls)->ls_name , ##args)文章来源地址https://www.toymoban.com/news/detail-679868.html

到了这里,关于fmt, ##__VA_ARGS__的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • fmt的格式化输入输出

    fmt 包是 Go 语言标准库中用于格式化输入和输出的包,它提供了丰富的函数来控制输出的格式,处理不同类型的数据,并且可以从输入源(如标准输入、文件)读取数据。下面将详细介绍 fmt 包的格式化输出和输入处理。 格式化输出 : fmt 包通过格式字符串来控制输出的格式

    2024年02月13日
    浏览(42)
  • c++ {fmt}库使用指南一

    一、缘起 夜已深,时针悄悄来到了十一点半,但我的思绪却像一股涌泉般汹涌澎湃,完全无法入眠。此时,我渴望做一些有意义的事情,决定借助这份宁静,沉下心来,撰写一份关于fmt库的使用指南。 fmt库是一个高效、易用的C++格式化库,可以帮助我们方便地进行字符串格

    2024年02月16日
    浏览(29)
  • VA01/VA02/VA03 销售订单根据定价和步骤校验权限隐藏价格

    针对用户使用销售订单时,根据定价和步骤顺序,判断是否有权限。此处通过有权限则隐藏价格的方式,隐藏销售订单抬头和行项目的部分价格数据 要限制的定价和步骤在spro中的位置 限制的步骤 创建带有定价和步骤的权限对象 分配权限给需要隐藏价格的用户 隐藏抬头和行

    2024年02月07日
    浏览(48)
  • 【c++随笔08】可变参数——va_list、va_start、va_end、va_arg

    原创作者:郑同学的笔记 原创地址:https://zhengjunxue.blog.csdn.net/article/details/131690070 qq技术交流群:921273910 当你在编写 C++ 函数时,有时候你会需要处理可变数量的参数。C++ 中提供了 头文件,其中包含了用于处理可变参数的函数和宏。本教程将向你介绍如何使用 来编写可变参

    2024年02月07日
    浏览(33)
  • Go中字符串处理:fmt.Sprintf与string.Builder的比较

    在Go语言中,我们通常会遇到两种主要的方式来处理和操作字符串:使用 fmt.Sprintf 函数和 string.Builder 类型。尽管两者都可以实现字符串的格式化和连接,但它们在性能和用法上有一些关键区别。 fmt.Sprintf 是一个函数,它根据提供的格式化字符串和参数列表,将它们格式化为

    2024年02月05日
    浏览(51)
  • SAP ERP系统SD模块常用增强之一:VA01/VA02创建或修改SO的输入检查

    在SAP/ERP项目的实施中销售管理模块(SD)的创建和修改销售订单必定会有输入字段校验检查的需求,来防止业务人员录入错误或少录入数据,SAP公司也考虑到这一点,所以这方面的配置功能也非常强大,通常情况下不需要写开发代码,业务顾问通过配置不完整日志就可以非常

    2023年04月12日
    浏览(45)
  • C++11可变参数模板(typename... Args模板参数包或class... Args)(Args... args函数参数包)(递归展开与参数包展开(只支持C++17))

    C++可变参数是指函数的参数个数是可变的,可以在函数定义时不确定参数的个数,需要在函数体内通过特定的语法来处理这些参数。C++11标准引入了新的可变参数模板,使得可变参数的处理更加方便和灵活。在函数定义时,可以使用省略号(…)来表示可变参数,然后通过va_li

    2024年02月08日
    浏览(45)
  • Ja实现对业务用户va如何实现readBytes的操作篇

    这里只介绍liteflow的简单基础使用以及作者对liteflow进行可视化扩展的相关阐述 背景:对于拥有复杂业务逻辑的系统承载着核心业务逻辑,这些核心业务逻辑涉及内部逻辑运算,缓存操作,持久化操作,外部资源调取,内部其他系统RPC调用等等。项目几经易手,维护的成本就

    2024年02月22日
    浏览(40)
  • 解决SystemExit: 2,args = parser.parse_args() 的问题,

    报错原因: argparse 是一个旨在解析从命令行传递的参数的模块,您可以使用 argparse 来编译 参数内容。如果 argparse 认为参数无效,则退出,这通常在 python 中通过调用 sys.exit() 来完成,这会引发 SystemExit 错误,这就是您所看到的。 所以问题是你试图从交互式解释器(看起来像

    2024年02月12日
    浏览(39)
  • va_list使用及两个注意项(可能导致崩溃和少1个字符)

    两个注意项:         1、linux平台上vsnprintf会破坏va_list变量,需要重新调用va_start,否则可能访问错位崩溃。         2、vsnprintf会留一个字节补0结束,但返回值不包含,所以必须判断返回值小于分配的空间。 具体代码分析: windows运行:

    2024年02月10日
    浏览(182)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包