2010-06-03 68 views
2

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

+1

类似于http://stackoverflow.com/questions/234365/is-tchar-still-relevant – dan04 2010-06-09 00:28:43

+0

我还没有看到开发人员建议使用'TCHAR's。但是,我看到开发人员建议保持一致。如果您调用通用API版本(例如'CreateFile'),那么您需要保持一致并传递一个'LPCTSTR'。你确定你不会混淆这些吗? – IInspectable 2016-06-26 09:25:33

回答

1

如果有人告诉你走路高达1,000,000行非_UNICODE C++中,用大量使用char代替wchar_tTCHARWCHAR,可要准备好应对非Unicode的Win32 API声明的。大规模的转换非常昂贵,而且可能不是源货币准备支付的东西。

至于新的代码,很好,有如此多的实例代码有使用TCHAR,它可以更容易地剪切和粘贴,并且在某些情况下,如wchar_tWCHARunsigned shortWCHAR之间的一些摩擦。

谁知道,也许有一天MS会在TCHAR下添加一个UTF-32数据类型?

+0

关于拓展TCHAR的可能性有趣的一点。尽管UTF-32很可能在现存的每一段实际文本上都会占用更多的空间,但不太可能。 HTML5完全拒绝它作为编码。 – kibibu 2010-06-03 01:09:36

+0

@kib UTF-32评论意图是幽默的。 – bmargulies 2010-06-03 01:10:05

+0

@bmargulies糟糕:/ – kibibu 2010-06-03 01:35:52

0

其实,函数的unicode版本是在1993年用Win32在Windows NT 3.1中引入的。事实上,在基于NT的软件中,几乎所有* A函数都转换为Unicode,并在内部调用* W版本。此外,通过Microsoft Layer for Unicode支持9x上的* W功能。

对于新程序,我肯定会推荐直接使用TCHAR宏或WCHAR。我怀疑MS在NT的一生中会加入对任何其他字符大小的支持。对于现有的代码库,我想这将取决于支持Unicode与修复它的成本的重要性。为了向后兼容,* A函数需要永远留在Win32中。

相关问题