Je vois encore des conseils sur l'utilisation des types LPTSTR
/TCHAR
, etc., au lieu de LPWSTR
/WCHAR
. Je crois que les trucs Unicode ont été bien présentés à Win2k, et franchement je n'écris plus de code pour Windows 98. (Sauf cas particuliers, bien sûr.) Étant donné que je ne me soucie pas de Windows 98 (ou, encore moins, ME) comme ils sont dix ans OS, y at-il une raison d'utiliser la compatibilité TCHAR
, etc types? Pourquoi encore conseiller aux gens d'utiliser TCHAR
- quel avantage ajoute-t-il en utilisant WCHAR
directement?Les appels d'API * A Win32 sont-ils toujours pertinents?
Répondre
Si quelqu'un vous dit de marcher jusqu'à 1.000.000 lignes de non-_UNICODE C++, avec beaucoup de déclarations à l'aide char
au lieu de wchar_t
ou TCHAR
ou WCHAR
, vous feriez mieux d'être prêt à faire face à l'API non-Unicode Win32. La conversion à grande échelle est très coûteuse et peut ne pas être quelque chose que la source-o-money est prête à payer.
En ce qui concerne le nouveau code, eh bien, il y a tellement de code d'exemple là-bas en utilisant TCHAR qu'il peut être plus facile de couper et coller, et il y a dans certains cas, des frictions entre WCHAR
comme wchar_t
et WCHAR
comme unsigned short
.
Qui sait, peut-être un jour MS ajoutera un type de données UTF-32 sous TCHAR?
Point intéressant sur la possibilité d'étendre TCHAR. Peu probable cependant, car UTF-32 est susceptible de prendre beaucoup plus d'espace sur à peu près chaque morceau de texte existant. HTML5 le rejette comme un encodage entièrement. – kibibu
@kib le commentaire UTF-32 était censé être humoristique. – bmargulies
@bmargulies Oups:/ – kibibu
En fait, les versions Unicode des fonctions ont été introduites avec Win32 en 1993 avec Windows NT 3.1. En fait, sur les oses basés sur NT, presque toutes les fonctions * A convertissent simplement en Unicode et appellent la version * W en interne. En outre, le support des fonctions * W sur 9x existe par Microsoft Layer for Unicode.
Pour les nouveaux programmes, je recommande d'utiliser directement les macros TCHAR ou WCHAR directement. Je doute que MS ajoute du support pour d'autres tailles de caractères pendant la durée de vie de NT. Pour les bases de code existantes, je suppose que cela dépend de l'importance de la prise en charge d'Unicode par rapport au coût de la résolution. Les fonctions * A doivent rester dans Win32 pour toujours pour la rétrocompatibilité.
- 1. Trouver seulement les points pertinents dans MATLAB
- 2. L'édition Inview Win32 listview est toujours annulée
- 3. Les appels de service Web asynchrones appellent-ils toujours AsyncCallback?
- 4. FULLTEXT Résultats non pertinents
- 5. messages non pertinents
- 6. Comment faire des appels API Win32 à partir de PHP?
- 7. Comment tracer des appels et des demandes de socket Win32
- 8. C# SharpZipLib supprime les noms de répertoire non pertinents
- 9. Pourquoi hasLayout a toujours -1?
- 10. Déboguer les résultats de recherche Wordpress non pertinents
- 11. Les scripts de menu XCode ne sont-ils plus pertinents?
- 12. Les appels système sur Windows
- 13. ASP.NET a enchaîné des appels asynchrones
- 14. Garder une fenêtre toujours en haut - y compris les menus (win32)
- 15. Les appels WCF Ajax bloquent-ils les appels?
- 16. Y a-t-il un moyen de fournir à Lucene.NET une liste de termes pertinents prédéfinis?
- 17. Les appels de service WCF échouent toujours après 30 secondes avec (502) passerelle incorrecte
- 18. $ "survivre entre les appels
- 19. Surveiller les appels d'API
- 20. Suivre les appels asynchrones
- 21. Intercepter les appels entrants
- 22. Les appels AJAX imbriqués
- 23. Bloquer les appels entrants
- 24. portée variable dans les appels AJAX
- 25. Pourquoi les appels retournés par un appel JAX-WS sont-ils toujours vides?
- 26. Passer les paramètres dans les appels document.ready()
- 27. Jbpm ProcessDefinition a toujours la version -1
- 28. UserControl OnPaint a toujours clipRect de {0,0,0,0}
- 29. MySQL WHERE a toujours besoin d'une table
- 30. Préserver les objets entre les appels wcf?
Similaire à http://stackoverflow.com/questions/234365/is-tchar-still-relevant – dan04
Je n'ai pas vu de développeurs suggérer d'utiliser 'TCHAR's. J'ai cependant vu des développeurs suggérer d'être cohérents. Si vous appelez la version de l'API générique (par exemple 'CreateFile'), vous devez être cohérent et passer un' LPCTSTR'. Êtes-vous sûr de ne pas les confondre? – IInspectable