zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    表字段出现oracle sql语句关键字时
    使用decode函数
    PL/SQL DEVELOPER 使用小技巧
    Linux静态IP设置修改配置文件
    在idea上使用maven搭建ssm,数据库为mysql
    作业
    SQL 简单的生成xml
    使用CppUnit
    tinyXml的使用
    NSIS 使用技巧
  • 原文地址:https://www.cnblogs.com/spriteflk/p/4067531.html
Copyright © 2011-2022 走看看