我仍然看到有关使用LPTSTR
/TCHAR
类型等的建议,而不是LPWSTR
/WCHAR
。我相信Unicode的东西是在Win2k中引入的,我坦率地说不再为Windows 98编写代码。 (当然,除了特殊情况)。鉴于我不关心Windows 98(或者甚至更少的ME),因为它们是十年前的操作系统,是否有任何理由使用兼容性类型TCHAR
等?为什么仍然建议人们使用TCHAR
- 它直接使用WCHAR
有什么好处?* Win32 API调用是否仍然相关?
回答
如果有人告诉你走路高达1,000,000行非_UNICODE C++中,用大量使用char
代替wchar_t
或TCHAR
或WCHAR
,可要准备好应对非Unicode的Win32 API声明的。大规模的转换非常昂贵,而且可能不是源货币准备支付的东西。
至于新的代码,很好,有如此多的实例代码有使用TCHAR,它可以更容易地剪切和粘贴,并且在某些情况下,如wchar_t
和WCHAR
为unsigned short
WCHAR
之间的一些摩擦。
谁知道,也许有一天MS会在TCHAR下添加一个UTF-32数据类型?
关于拓展TCHAR的可能性有趣的一点。尽管UTF-32很可能在现存的每一段实际文本上都会占用更多的空间,但不太可能。 HTML5完全拒绝它作为编码。 – kibibu 2010-06-03 01:09:36
@kib UTF-32评论意图是幽默的。 – bmargulies 2010-06-03 01:10:05
@bmargulies糟糕:/ – kibibu 2010-06-03 01:35:52
其实,函数的unicode版本是在1993年用Win32在Windows NT 3.1中引入的。事实上,在基于NT的软件中,几乎所有* A函数都转换为Unicode,并在内部调用* W版本。此外,通过Microsoft Layer for Unicode支持9x上的* W功能。
对于新程序,我肯定会推荐直接使用TCHAR宏或WCHAR。我怀疑MS在NT的一生中会加入对任何其他字符大小的支持。对于现有的代码库,我想这将取决于支持Unicode与修复它的成本的重要性。为了向后兼容,* A函数需要永远留在Win32中。
- 1. SSI是否仍然相关?
- 2. eAccelerator是否仍然相关?
- 3. HTTP 1.0指令是否仍然相关?
- 4. pecl是否仍然与php相关
- 5. Camera2 API onCaptureComplete()被调用,但相机状态仍然是CONTROL_AE_STATE_PRECAPTURE
- 6. 关键字标签在API响应中是否仍然可用?
- 7. 是否仍然支持MetaWeblog API?
- 8. @import url(addonstyles.css)仍然相关?
- 9. Hibernate的Criteria API是否仍然不支持嵌套关系
- 10. Ada编程语言在军队中是否仍然相关?
- 11. DBCP(Apache Commons Database Connection Pooling)是否仍然相关?
- 12. 即使是Graph API,connect_reclaim_url是否仍然可用?
- 13. 是否仍然有效?
- 14. IOrderedQueryable.AsEnumerable()是否仍然有序?
- 15. ,Cookie是否仍然需要?
- 16. MODI是否仍然维护?
- 17. 是否session_destroy();仍然工作?
- 18. Sharekit是否仍然有效?
- 19. 为属性设置相同的值是否仍然调用willSet和didSet?
- 20. android.hardware.Camera是否仍然适用于所有API级别?
- 21. Win32 API调用SslEncryptPacket()是做什么的?
- 22. Docker群发现仍然相关?
- 23. Django“apps”文件夹仍然相关?
- 24. 虚拟化仍然与Docker相关吗?
- 25. Spring的WebUtils.getSessionMutex(javax.servlet.http.HttpSession)和HttpSessionMutexListener仍然相关
- 26. wap/wml在2011年仍然相关?
- 27. BOOST_LIKELY和__builtin_expect仍然相关吗?
- 28. Win32 DDK:从驱动程序中断调用API是否错误?
- 29. 是否SQL Server 2008 Express仍然可用?
- 30. Google GCM是否仍然可用?
类似于http://stackoverflow.com/questions/234365/is-tchar-still-relevant – dan04 2010-06-09 00:28:43
我还没有看到开发人员建议使用'TCHAR's。但是,我看到开发人员建议保持一致。如果您调用通用API版本(例如'CreateFile'),那么您需要保持一致并传递一个'LPCTSTR'。你确定你不会混淆这些吗? – IInspectable 2016-06-26 09:25:33