* A Win32 API调用仍然相关吗?

时间:2010-06-03 00:45:28

标签: windows winapi

我仍然看到有关使用LPTSTR / TCHAR类型等的建议,而不是LPWSTR / WCHAR。我相信在Win2k上很好地介绍了Unicode的东西,我坦率地说不再为Windows 98编写代码了。 (当然,除了特殊情况。)鉴于我不关心Windows 98(或者更少,ME),因为它们是十年前的操作系统,是否有任何理由使用兼容性TCHAR等。类型?为什么还建议人们使用TCHAR - 直接使用WCHAR会增加什么好处?

2 个答案:

答案 0 :(得分:1)

如果有人告诉你要使用char而不是wchar_tTCHARWCHAR来使用1,000,000行非_UNICODE C ++,并且有很多声明,那么你最好准备好应对非Unicode Win32 API。大规模转换是非常昂贵的,并且可能不是源头资金准备支付的费用。

至于新代码,嗯,使用TCHAR有很多示例代码,它可能更容易剪切和粘贴,并且在某些情况下WCHARwchar_t之间存在一些摩擦, WCHARunsigned 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中。