IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    C语言中宏定义的##连接符和#转换符的用法介绍

    admin发表于 2011-03-11 03:41:12
    love 0

    1. ##连接符的用法

    在C语言中,## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串,一般跟在宏定义参数的前面。

    2.#转换符的用法
    #转化符是将传递的参数作为字符串来进行处理。
    例如定义如下宏:

    #define pasrse( i ) printf( "token" #i " = %d", token##i ) 
    //同时定义如下的变量
    int token1 = 1;

    则调用parse(1)的打印结果为:

    #宏展开: printf("token" "1" "= %d", token1);
    token1=1
    

    3.宏定义的可变参数
    在宏定义中使用可变参数,只需在参数后面加入”…”,然后使用##连接即可
    例如下面的例子:

      #define LOG_INFO(fmt, args...) \
          do {                       \
              log_write("LOG_INFO", __func__, __FILE__, __LINE__, fmt, ##args); \
          }while(0)
    //其中log_write的原型为:
      void log_write(const char *level, const char *func, const char *file, int line, const char *fmt,
              ...);

    您可能对下面文章也感兴趣:

    • linux中container_of用法详解
    • source insight看cc文件
    • php实现函数可变参数列表


沪ICP备19023445号-2号
友情链接