首页 > 代码库 > C++零食:使用Unicode版的预定义宏__FUNCTION__
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__
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。