现在的位置: 首页 > 综合 > 正文

VC++2008中的unsigned short和wchar_t

2013年01月09日 ⁄ 综合 ⁄ 共 664字 ⁄ 字号 评论关闭

转自: http://blog.csdn.net/dingdangbears/archive/2009/03/05/3956147.aspx

 

原来c++内置wchar_t。

这就好比下面的代码:

    short sh;
   unsigned short ush;
   ush = sh; //ok
  
short* pShort;
   unsigned short* pChar;
   pShort = pChar;//
illegal

   long l;
   unsigned long ul;
   ul = l; //ok
   long *pL;
  
unsigned long *pul;
   pL = pul;// illegal

short可以隐式转换为unsigned short, 而short*不可以隐式转换为unsigned short*;

long可以隐式转换为unsigned long, 而long*不可以隐式转换为unsigned long*;

同理:TCHAR(wchar_t)可以隐式转换为XChar(unsigned short),
而TCHAR*(wchar_t*)不可以隐式转换为XChar*(unsigned short*)。

解决方案:

1,设置Property --> C/C++ --> language --> Treat wchar_t as
Build-in Type为NO. wchar_t不是内置的了,而是typedef unsigned short wchar_t。

2,用reinterpret_cast

3,改typedef unsigned short XChar 为 typedef wchar_t XChar。

【上篇】
【下篇】

抱歉!评论已关闭.