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

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

下面,图老师小编带您去了解一下把符号转化为字符串的宏技巧,生活就是不断的发现新事物,get新技能~

【 tulaoshi.com - 编程语言 】

此处使用到一个特殊的宏:#

#的作用是给其后的参数添加一对双引号。

运行一下下面的例子代码:

#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值,而且可以用来输出函数名,变量名等。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

很容易想到的一个用途就是用来做log或者用以输出调试信息。

这里提供一个简单的例子:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

#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或者调试信息的输出搭建一个简洁方便的平台了。

来源:https://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...
标签: PHP
  $string = "连接http://www.phpx.com 站点"; //连接后需要有个空格或回车。 $string =  eregi_replace("http://([^ ,\r\n]*)","<a href=\\0 target=_blank\\0</a",$string); $string =  eregi_replace("ftp://([^ ,\r\n]*)","<a href=\\0 target=_blank...
在数据库编程中我们经常用到连接字符串,针对不同的数据库有不同的连接字符串,记忆使用都很不方便,所以向大家介绍两个小技巧,希望大家喜欢!^_^ 方法一: 新建一个文本文件,把后缀名改成*.udl 双击打开按照提示完成里面的操作 然后测试连接,成功后关闭 在用记事本打开,呵呵,里面就有连接字符串了 方法二: http://www.connectionstrings.com/
标签: 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...

经验教程

774

收藏

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