一、通过不定参宏进行日志输出

#define LOGINFO(fmt,...) printf("[%s][%s]", __FUNCTION__, GETINFO(fmt, __VA_ARGS__))

通过参数  __VA_ARGS__ 来展开不定参数,  这里借助宏可以输出日志的位置等信息。

这里不定参的输入如果为空,linux下可能无法编译通过,你需要加 ##

#define LOGINFO(fmt,...) printf("[%s][%s]", __FUNCTION__, GETINFO(fmt, ## __VA_ARGS__))

二、如果你需要在宏中继续展开并使用参数,在windows下会变成一个参数,如下:

#define SUBPROCESS(X,...) X
#define MYPROCESS(...)  SUBPROCESS(__VA_ARGS__)

X取到的,将会时所有的参数,你可以用以下办法解决

#define EXPAND(...) __VA_ARGS__
#define SUBPROCESS(X,...) X
#define MYPROCESS(...)  EXPAND(SUBPROCESS(__VA_ARGS__))

C++ 不定参宏展开相关推荐

  1. linux c 中 当前函数名 文件名 可变参 不定参 宏使用

    在linux编程中,当文件数量变的众多之后,使用gdb调试就是一场灾难.因此在程序中加入合理的打印信息,定位错误出现的文件名,函数名,行号等信息,能更高效的定位到问题的所在. 下面定义了宏,分别是WA ...

  2. 带参宏和带参函数的比较(C语言)

    例:分别通过宏定义和函数方式求a和b的乘积 #include<stdio.h> #define mult_macro(a,b) a*b int mult_fun(int a, int b) ...

  3. 4.6宏定义之带参宏

    //本文为转载,具体出处已经找不到了.这里引用为了知识传播.感谢原作者. C语言允许宏带有参数.在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,这点和函数有些类似.就像把函数的实参传递给形 ...

  4. 【C语言】宏定义和带参宏定义

    宏定义是在编程中经常使用的一个模块,其优点在于当写的代码量比较大的时候方便修改检查,可以做到改一变"百". 一.宏定义 宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏 ...

  5. 柯里化的两种实现方式(定参和不定参)

    1. 函数柯里化简介 **函数柯里化是指把接收多个参数的函数转换为接受单一参数的函数,并返回接收剩下参数的新函数的技术.**通俗点说,就是将多元函数转化为多个单元函数的连续定义(这里的元代指参数). ...

  6. 05c语言——宏定义、带参宏、带参宏函数

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.宏定义 1.使用规则 2.注意 二.带参宏 1.定义 2.注意 三.带参函数 1.带参函数的宏与带参宏的区别 2.带参宏 ...

  7. 【C++---10】有参宏,无参宏,宏的优缺点

    目录 1.宏格式: 2.无参宏详解: 3.宏和typedef: 4.有参宏详解: 5.无参宏说明: 6.有参宏说明: 7.宏的优点: 8.宏的缺点: 9.define与const的区别的简单总结: 1 ...

  8. 定义一个有参宏判断一个字符是否在0~9之间

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p241 习题7 12.定义一个有参宏IS_DIGIT(ch),当ch是一个0~9的字符时,返回1,否则 ...

  9. 定义一个有参宏SWAP(t,x,y),用以交换t类型的两个参数的值

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p241 习题7 11.定义一个有参宏SWAP(t,x,y),用以交换t类型的两个参数的值 #inclu ...

最新文章

  1. C语言 · 身份证号码升级
  2. 使用React Router以编程方式导航
  3. Ruby中,:(ampersand colon)的用法
  4. SQLSERVER常用函数汇总
  5. EOJ_1064_树的层号表示法
  6. Hibernate关联映射(一对多/多对多)
  7. 百度地图2021十一大数据:全国高速拥堵里程超7000公里
  8. Linux内存分配小结--malloc、brk、mmap【转】
  9. OEIS | 一个牛x的网站
  10. ArcGIS操作实例视频教程38讲全集(转)
  11. 如何获取JVM的dump文件
  12. 安卓手机怎么设置蓝牙耳机弹窗动画_AirPods Pro 搭配安卓一个月深度体验
  13. git里面的文件怎么删不掉_git如何删除已经提交的文件夹
  14. linux内核tcp_hdr,TCP的URG标志和内核实现
  15. flyaway mysql_graylog2.3日志服务器
  16. 短视频平台api接口php源码
  17. php 中 href,html中href什么意思
  18. linux如何注销远程用户登录,Linux无法被远程登录;用户的关机, 重启,注销,新增用户,删除用户...
  19. Suit and Tie (在线swap 贪心 思维)
  20. 海量数据处理算法—Bloom Filter

热门文章

  1. Unity3d 实现顶点动画
  2. Python中print输入打印左对齐,右对齐,居中对齐等
  3. 台式计算机红外线端口,自己动手,给电脑加装红外线接口.pdf
  4. CSS问题总结(补充中)
  5. python 凯撒加密 计算偏移量
  6. 解决进不了网页,检查问题为DNS error(以连接校园网进不去教务系统为例)
  7. Norton PartitionMagic v8.05 零售版
  8. 浮点数(float)内存表示方法
  9. JDK官网下载又慢又繁琐?试试华为云上下载各个版本的JDK吧
  10. SpringBoot中的Validator参数校验器——通过注解的方式控制controler接收参数的规则