书上说 : “如果定义了名为_UNICODE的标识符,并且程序中包含了TCHAR.H表头文件,那么_tcslen就定义为wcslen:”这类的东西说了很多,但是还是不明白怎样定义 _UNICODE 啊?还有就是有时候是 _UNICODE 有时候又是 UNICODE 各位帮我看看~先谢谢啦~

解决方案 »

  1.   

    工程右键中,属性,选择Unicode 字符集
    这样查看C/C++ 中的precompile macro中会有添加_UNICODE
      

  2.   

    最好也定义上 UNICODE,UNICODE和_UNICODE两个。
      

  3.   


    如果定义了_UNICODE 你的工程就已经被IDE添加了_UNICODE了。
    其实你可以自己定义my_tcslen就像这样:
    #ifdef _UNICODE 
    typedef wchar_t my_tcslen
    #else
    typedef char my_tcslen
    #endif你会发现如果你的工程定义了unicode字符集 ide中
    #else
    typedef char my_tcslen
    #endif
    这段是灰色的反之
    #ifdef _UNICODE 
    typedef wchar_t my_tcslen
    这段是灰色的。(VS 08)我一般这样用:
    标准c++中string 分为string和wstring我一般会自己定义一个_tstring来自适应宽字符或者多字符
    #ifdef _UNICODE
    typedef wstring _tstring
    #else
    typedef string _tstring
    #endif
    这样不管工程是多字符还是宽字符只要用_tstring str就可以达到自适应的目的了。
    不知道你明白没有。至于多字符与宽字符的区别。宽字符一般用2个char类存储一个字。而多字符ascii码采用1个字符。其他被分解为两个char存储。
      

  4.   

    _UNICODE,UNICODE两个宏的区别是,前者对c++标准库其作用,后者对微软的库起作用。
    他们都是宏,#define UNICODE(定义了UNICODE), #undef UNICODE(取消UNICODE)
      

  5.   

    stdafx.h
    #define _UNICODE这样工程就是unicode的了, 程序中所有与字符串有关的函数都要采用unicode版本的, 即带w的, 如MessageBoxW
      

  6.   

    up
    《Windows程序设计》中这个问题讲得比较清楚。