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

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

  • 宏定义带'#'字符的不同含义
      • 带一个 ‘#’ 转化为字符串
      • 带两个 "##" 就是拼接(主要是跟 ##__VA_ARGS__一起用)
      • 定义日志宏

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

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

	#define  _TOSTRING(x)  #x
	int main()
	{
		 auto s1 = _TOSTRING(123);
	     std::cout << " s1  " <

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

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

你可能感兴趣的:(c++,c++,c++11)