jal*_*alf 15
wchar_t 是一种独特的类型,由C++标准定义.
WCHAR是不规范的,据我所知,只存在于Windows.然而,它只是一个typedef(或可能是一个宏)wchar_t,所以它没有实际的区别.
MSVC的旧版本并没有wchar_t作为第一类类型,相反,它只是一个typedef用于short
最有可能的是,Microsoft引入WCHAR了代表任何编译器版本的"宽字符类型",无论是否wchar_t作为本机类型存在.
您应该wchar_t在代码中使用.这就是它的用途.
Kon*_*lph 12
那么,一个实际的区别就是WCHAR我的平台上不存在.对于Windows(并且无意将程序移植到另一个平台)并且包含必要的头文件,它们是相同的(因为WCHAR它只是一个typedef).
有人知道几岁WCHAR吗?我想它至少可以追溯到 Windows NT 3.1。我推测当微软开始WCHAR在 Windows 头文件wchar_t中使用时,C 或 C++ 标准中都没有定义。如果我错了,请纠正我。
微软不得不支持以下声明和头文件: a) 必须在 C 和 C++ 中工作;b) 在非常不同的架构(i86、MIPS、PowerPC、Alpha 等)下编译,并且 c) 必须向后兼容为 15 年以上的编译器编写的源代码。此外,过去二十年中出版的任何重大变化和数千本书籍、参考手册、在线文档等都会突然变得错误。
WCHAR 是一个接口——一旦发布,它就是一成不变的,即使新代码不需要它。