我仍然看到有關使用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