变长参数__VA_ARGS__ 和 写日志的宏定义

本文介绍了C++中宏定义中`#`字符用于将参数转化为字符串,`##`用于拼接,特别是与`__VA_ARGS__`配合使用的情况。还讨论了在使用预定义宏`VA_ARGS`时需要注意的字符串连接空格问题,并展示了如何定义日志宏。
摘要由CSDN通过智能技术生成

宏定义带’#'字符的不同含义

带一个 ‘#’ 转化为字符串

	#define  _TOSTRING(x)  #x
	int main()
	{
		 auto s1 = _TOSTRING(123);
	     std::cout << " s1  " <<s1 <<std::endl;     //  "123"  返回const char*
	}

带两个 “##” 就是拼接(主要是跟 ##__VA_ARGS__一起用)

     用于宏的替换部分,这个运算符把两个语言符号组合成单个语言符号,为宏扩展提供了一种连接实际变元的手段。也可以用作数字拼接吧,
不过要注意int的取值范围,我用这个宏去替换(连接两个字符串)会报错,是错误的参数,至于为啥返回int,我还没搞明白,如果有人知道告
诉我一下
	#define CONNECT_TWO(x,y)   x##y
	int main()
	{
			 auto s2 = CONNT_TWO(123,456);
    		 std::cout << " s2  " <<s2 <<std::endl;  // 返回的是一个int的数字拼接,123456
	}

定义日志宏

第一种:日志宏,注意一点:在define中如果是多行定义,需要加上符号 '\'

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值