2010-06-03 7 views
2

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?

+1

Similaire à http://stackoverflow.com/questions/234365/is-tchar-still-relevant – dan04

+0

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

Répondre

1

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?

+0

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

+0

@kib le commentaire UTF-32 était censé être humoristique. – bmargulies

+0

@bmargulies Oups:/ – kibibu

0

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é.

Questions connexes