把符号转化为字符串的宏技巧

2016-02-19 13:58 6 1 收藏

下面,图老师小编带您去了解一下把符号转化为字符串的宏技巧,生活就是不断的发现新事物,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

延伸阅读
标签: Web开发
去掉字符串中匹配 的字符串 代码如下: /** * 去掉字符串中匹配 的字符串 * * @author zhujie * @return String regex 要替换的内容 value 字符串 state 替换的内容变成什么 */ public static String toRegex(String regex, String value, String state) { Pattern p = Pattern.compile(regex); Matcher m = p.matcher(value); String...
标签: Web开发
a href="1.htm"251/a 怎么用JS把251替换为 span style='background-color: #99FF99'251/span [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
SELECT   SUBSTR (T.RPT_ID,                 INSTR (T.RPT_ID,',',1,C.LV)+ 1,                 INSTR (T.RPT_ID,',',1,C.LV + 1)- (INSTR (T.RPT_ID,',',1,C.LV)+ 1)) &n...
标签: ASP
  '*************测字符串长度************** Function CheckStringLength(txt) txt=trim(txt) x = len(txt) y = 0 for ii = 1 to x if asc(mid(txt,ii,1)) < 0 or asc(mid(txt,ii,1)) 255 then '如果是汉字 y = y + 2 else y = y + 1 end if next CheckStringLength = y End Function '************* 截取字符串 ************** f...
标签: Web开发
一、概述     字符串在javascript中几乎无处不在,在你处理用户的输入数据的时候,在读取或设置DOM对象的属性时,在操作cookie时,当然还有更多...。JavaScript的核心部分提供了一组属性和方法用于通用的字符串操作,如分割字符串,改变字符串的大小写,操作子字符串等。     当前的大部分浏览器也能从强大的...

经验教程

726

收藏

34
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部