文章目錄
在C++中支援一種預定義宏。比如:
__FILE__: 就是當前原始碼檔案名稱
__LINE__: 就是當前原始碼的行號
這些宏可以在printf等語句中直接作為字串使用,調試的時候很方便。
如下代碼所示:
int _tmain(int argc, _TCHAR* argv[]){ printf("Line:%d", __LINE__); return 0;}
執行後
Line:12
為了方便使用,微軟在VC中還定義了一些它特有的宏,如:
__FUNCTION__:返回當前代碼所在函數的名字
樣本:
int _tmain(int argc, _TCHAR* argv[]){ printf("Function Name:%s", __FUNCTION__); return 0;}
執行後:
Function Name:wmain
不過,這些宏都是ANSI版本的。沒有Unicode版本,實際使用時有點麻煩。
__FUNCTIONW__
今天尋找了下資料,找到瞭解決辦法,與大家分享。
在yvals.h 定義了一個__FUNCTIONW__ ,即Unicode版本的__FUNCTION__
所以如果需要使用Unicode版本的話,直接包含這個標頭檔,然後使用即可:
#include <yvals.h>int _tmain(int argc, _TCHAR* argv[]){ wprintf(L"Function Name:%s", __FUNCTIONW__); return 0;}
如果你不想包含yvals.h的話,可以在你的標頭檔上面加下面的三句定義,也可以使用了:
#define __STR2WSTR(str) L##str#define _STR2WSTR(str) __STR2WSTR(str)#define __FUNCTIONW__ _STR2WSTR(__FUNCTION__)int _tmain(int argc, _TCHAR* argv[]){ wprintf(L"Function Name:%s", __FUNCTIONW__); return 0;}