C++ 不定参宏展开
一、通过不定参宏进行日志输出
#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++ 不定参宏展开相关推荐
- linux c 中 当前函数名 文件名 可变参 不定参 宏使用
在linux编程中,当文件数量变的众多之后,使用gdb调试就是一场灾难.因此在程序中加入合理的打印信息,定位错误出现的文件名,函数名,行号等信息,能更高效的定位到问题的所在. 下面定义了宏,分别是WA ...
- 带参宏和带参函数的比较(C语言)
例:分别通过宏定义和函数方式求a和b的乘积 #include<stdio.h> #define mult_macro(a,b) a*b int mult_fun(int a, int b) ...
- 4.6宏定义之带参宏
//本文为转载,具体出处已经找不到了.这里引用为了知识传播.感谢原作者. C语言允许宏带有参数.在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,这点和函数有些类似.就像把函数的实参传递给形 ...
- 【C语言】宏定义和带参宏定义
宏定义是在编程中经常使用的一个模块,其优点在于当写的代码量比较大的时候方便修改检查,可以做到改一变"百". 一.宏定义 宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏 ...
- 柯里化的两种实现方式(定参和不定参)
1. 函数柯里化简介 **函数柯里化是指把接收多个参数的函数转换为接受单一参数的函数,并返回接收剩下参数的新函数的技术.**通俗点说,就是将多元函数转化为多个单元函数的连续定义(这里的元代指参数). ...
- 05c语言——宏定义、带参宏、带参宏函数
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.宏定义 1.使用规则 2.注意 二.带参宏 1.定义 2.注意 三.带参函数 1.带参函数的宏与带参宏的区别 2.带参宏 ...
- 【C++---10】有参宏,无参宏,宏的优缺点
目录 1.宏格式: 2.无参宏详解: 3.宏和typedef: 4.有参宏详解: 5.无参宏说明: 6.有参宏说明: 7.宏的优点: 8.宏的缺点: 9.define与const的区别的简单总结: 1 ...
- 定义一个有参宏判断一个字符是否在0~9之间
<程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p241 习题7 12.定义一个有参宏IS_DIGIT(ch),当ch是一个0~9的字符时,返回1,否则 ...
- 定义一个有参宏SWAP(t,x,y),用以交换t类型的两个参数的值
<程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p241 习题7 11.定义一个有参宏SWAP(t,x,y),用以交换t类型的两个参数的值 #inclu ...
最新文章
- C语言 · 身份证号码升级
- 使用React Router以编程方式导航
- Ruby中,:(ampersand colon)的用法
- SQLSERVER常用函数汇总
- EOJ_1064_树的层号表示法
- Hibernate关联映射(一对多/多对多)
- 百度地图2021十一大数据:全国高速拥堵里程超7000公里
- Linux内存分配小结--malloc、brk、mmap【转】
- OEIS | 一个牛x的网站
- ArcGIS操作实例视频教程38讲全集(转)
- 如何获取JVM的dump文件
- 安卓手机怎么设置蓝牙耳机弹窗动画_AirPods Pro 搭配安卓一个月深度体验
- git里面的文件怎么删不掉_git如何删除已经提交的文件夹
- linux内核tcp_hdr,TCP的URG标志和内核实现
- flyaway mysql_graylog2.3日志服务器
- 短视频平台api接口php源码
- php 中 href,html中href什么意思
- linux如何注销远程用户登录,Linux无法被远程登录;用户的关机, 重启,注销,新增用户,删除用户...
- Suit and Tie (在线swap 贪心 思维)
- 海量数据处理算法—Bloom Filter
热门文章
- Unity3d 实现顶点动画
- Python中print输入打印左对齐,右对齐,居中对齐等
- 台式计算机红外线端口,自己动手,给电脑加装红外线接口.pdf
- CSS问题总结(补充中)
- python 凯撒加密 计算偏移量
- 解决进不了网页,检查问题为DNS error(以连接校园网进不去教务系统为例)
- Norton PartitionMagic v8.05 零售版
- 浮点数(float)内存表示方法
- JDK官网下载又慢又繁琐?试试华为云上下载各个版本的JDK吧
- SpringBoot中的Validator参数校验器——通过注解的方式控制controler接收参数的规则