程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> VC++ >> 把符號轉化為字符串的宏技巧

把符號轉化為字符串的宏技巧

編輯:VC++

此處使用到一個特殊的宏:#
#的作用是給其後的參數添加一對雙引號。

運行一下下面的例子代碼:

#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或者調試信息的輸出搭建一個簡潔方便的平台了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved