WCHAR和wchar_t之间有什么实际区别吗?
发布于 2009-02-18 16:34:50
好吧,一个实际的区别是我的平台上不存在WCHAR。只适用于Windows (并且不打算将程序移植到另一个平台),并且包含必要的头文件(因为WCHAR只是一个typedef)。
发布于 2009-02-18 16:52:36
wchar_t是由C++标准定义的一种独特类型。
WCHAR是_non_standard,据我所知,它只存在于Windows上。但是,它只是wchar_t的一个typedef (或者可能是一个宏),所以它没有实际的区别。
较早版本的MSVC没有将wchar_t作为第一类类型-相反,它只是short的typedef
最有可能的是,微软引入了WCHAR来表示任何编译器版本中的“宽字符类型”,无论wchar_t是否作为本机类型存在。
不过,您应该在代码中使用wchar_t。这就是它的作用。
发布于 2009-02-19 05:35:00
有人知道WCHAR多大了吗?我想它至少可以追溯到Windows NT 3.1。我推测,当微软开始在Windows头文件中使用WCHAR时,wchar_t在C或C++标准中都没有定义。如果我说错了,请纠正我。
微软的处境并不令人羡慕,它必须支持声明和头文件,a)必须在C和C++中工作;b)在非常不同的体系结构(i86,MIPS,PowerPC,alpha...)下编译。以及c)必须向后兼容为15+历史悠久的编译器编写的源代码。此外,任何突破性的变化,以及在过去20年中出版的数千本书、参考手册、在线文档等,都会突然变得错误。
WCHAR是一个接口--一旦发布,即使新代码不需要它,它也是一成不变的。
https://stackoverflow.com/questions/561839
复制相似问题