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

小菇凉小衣橱

小菇凉小衣橱

2016-02-19 13:58

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

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

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

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

#define Enum2Str(e) #e

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

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;
}
}

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

看了结果之后,相信你对这个宏有了初步的认识,事实上,它可以把任意的符号转化为字符串,也就是说,你不仅可以用来输出enum值,而且可以用来输出函数名,变量名等。

很容易想到的一个用途就是用来做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或者调试信息的输出搭建一个简洁方便的平台了。

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
把符号转化为字符串的宏技巧

获取闭合符号中的字符串

电脑网络
获取闭合符号中的字符串

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

字符串分割

编程语言 网络编程
字符串分割

delphi中将UCS2编码的字符串转化为GB2312编码的简单方法

编程语言 网络编程
delphi中将UCS2编码的字符串转化为GB2312编码的简单方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

复制字符串中的字符

编程语言 网络编程
复制字符串中的字符

字符串格式定义

电脑入门
字符串格式定义

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

JavaScript中的正则表达式解析

JavaScript中的正则表达式解析

得到连接和图片的地址 正则

得到连接和图片的地址 正则
下拉加载更多内容 ↓