下面,图老师小编带您去了解一下把符号转化为字符串的宏技巧,生活就是不断的发现新事物,get新技能~
【 tulaoshi.com - 编程语言 】
此处使用到一个特殊的宏:#
#的作用是给其后的参数添加一对双引号。
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)运行一下下面的例子代码:
#define Enum2Str(e) #e
enum VALUE{ ONE ,TWO ,THREE };
void test(VALUE v);
void main()
{
test(ONE);
}
void test(VALUE v)
{
switch(v)
{
case ONE: cout Enum2Str(ONE) endl;break;
case TWO: cout Enum2Str(TWO) endl;break;
case THREE: cout Enum2Str(THREE) endl;break;
}
}
看了结果之后,相信你对这个宏有了初步的认识,事实上,它可以把任意的符号转化为字符串,也就是说,你不仅可以用来输出enum值,而且可以用来输出函数名,变量名等。
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)很容易想到的一个用途就是用来做log或者用以输出调试信息。
这里提供一个简单的例子:
#define Symbol2Str(s) #s
//利用OutputDebugString输出调试信息:
#define MyCase(e) case e: OutputDebugString("VALUE is ");
OutputDebugString(Symbol2Str(e) );
OutputDebugString("")
//改写上面的例子
enum VALUE{ ONE ,TWO ,THREE };
void test(VALUE v);
void main()
{
test(ONE);
}
void test(VALUE v)
{
switch(v)
{
MyCase(ONE);break;
MyCase(TWO);break;
MyCase(THREE);break;
}
}
注意,为了使用OutputDebugString,你必须包含windows.h
到此为止,相信你已经可以用这个宏为自己的log或者调试信息的输出搭建一个简洁方便的平台了。
来源:http://www.tulaoshi.com/n/20160219/1605835.html
看过《把符号转化为字符串的宏技巧》的人还看了以下文章 更多>>