我仍然看到有关使用LPTSTR
/ TCHAR
类型等的建议,而不是LPWSTR
/ WCHAR
。我相信在Win2k上很好地介绍了Unicode的东西,我坦率地说不再为Windows 98编写代码了。 (当然,除了特殊情况。)鉴于我不关心Windows 98(或者更少,ME),因为它们是十年前的操作系统,是否有任何理由使用兼容性TCHAR
等。类型?为什么还建议人们使用TCHAR
- 直接使用WCHAR
会增加什么好处?
答案 0 :(得分:1)
如果有人告诉你要使用char
而不是wchar_t
或TCHAR
或WCHAR
来使用1,000,000行非_UNICODE C ++,并且有很多声明,那么你最好准备好应对非Unicode Win32 API。大规模转换是非常昂贵的,并且可能不是源头资金准备支付的费用。
至于新代码,嗯,使用TCHAR有很多示例代码,它可能更容易剪切和粘贴,并且在某些情况下WCHAR
与wchar_t
之间存在一些摩擦, WCHAR
为unsigned short
。
谁知道,也许有一天MS会在TCHAR下添加UTF-32数据类型?
答案 1 :(得分:0)
实际上,1993年使用Windows NT 3.1在Win32中引入了unicode版本的函数。实际上,在基于NT的ose上,几乎所有* A函数都只是转换为Unicode并在内部调用* W版本。此外,通过Microsoft Layer for Unicode确实支持9x上的* W功能。
对于新程序,我肯定会建议直接使用TCHAR宏或WCHAR。我怀疑MS会在NT的生命周期中增加对任何其他字符大小的支持。对于现有的代码库,我想这将取决于支持Unicode与修复它的成本的重要性。为了向后兼容,* A函数需要永久保留在Win32中。