闂佽 鍋撻柟顖滃椤ワ拷 (0) +1 闁荤姍宥嗗 (0) +1 闂傚⿴浜烽幏锟� (0) +1
闂佽 鍋撻柟顖滃椤ユ垿鏌熺€涙ê濮囧┑顕嗘嫹闂佸搫琚崕鍐诧耿閸涙潙缁╅柟顖滃椤ワ拷>>
0

正在阅读:把符号转化为字符串的宏技巧把符号转化为字符串的宏技巧

2005-06-06 09:55 出处: 作者:Panic 责任编辑:moningfeng
此处使用到一个特殊的宏:# #的作用是给其后的参数添加一对双引号。

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

#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值,而且可以用来输出函数名,变量名等。 很容易想到的一个用途就是用来做log或者用以输出调试信息。 这里提供一个简单的例子:

#define Symbol2Str(s) #s //利用OutputDebugString输出调试信息: #define MyCase(e) case e: OutputDebugString("VALUE is "); \ OutputDebugString(Symbol2Str(e) ); \ OutputDebugString("\n") //改写上面的例子 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或者调试信息的输出搭建一个简洁方便的平台了。

关注我们

最新资讯离线随时看 聊天吐槽赢奖品
闂佸綊娼ч鍡椻攦閳ь剟鎮规担鍛婂仴婵☆偓鎷�闂佹悶鍎抽崑娑㈠春鐏炰勘浜滈柛顐f礀閸旓拷