zoukankan      html  css  js  c++  java
  • gnu printf可变参数宏

    可变参数的宏

    标准C只支持可变参数的函数,意味着函数的参数可以是不固定的

    例如printf()函数的原型是int printf(const char *format [,argument]...)

    而在GNU C中,宏也可以接受可变数目的参数,例如

    #define pr_debug(fmt,arg...) printk(fmt,##arg)

    这里arg表示其余的参数可以是零个或多个,这些参数以及参数之间的逗号构成arg的值,在宏扩展时替换arg ,例如

    pr_debug("%s:%d",filename,line);被扩展为printk("%s:%d",filename,line);

    使用##的原因是为了处理arg不代表任何参数的情况,这时候,前面的逗号就变得多余了。

    使用##之后,GNU C预处理器会丢弃前面的逗号,这样代码pr_debug("success!/n") 会被正确扩展为 printk("success!/n")

    而不是 printk("success!/n",);

  • 相关阅读:
    13 数据库主从
    12 数据备份
    11 锁机制
    12 日志
    10 索引(二)
    09 索引
    update kernel 3.10-3.12
    haproxy para config
    mysql slave to master
    storage disk
  • 原文地址:https://www.cnblogs.com/yangjiguang/p/6848089.html
Copyright © 2011-2022 走看看