本文主要是介绍C++零食:使用Unicode版的预定义宏__FUNCTION__,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在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; }
这篇关于C++零食:使用Unicode版的预定义宏__FUNCTION__的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!