转自: http://blog.youkuaiyun.com/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。
本文探讨了C++中基本类型如short、long及其无符号版本之间的隐式转换规则,并延伸到wchar_t与XChar(unsigned short)之间的转换问题。特别强调了指针类型间无法进行类似的隐式转换。
1511

被折叠的 条评论
为什么被折叠?



