Вызовы * A Win32 API по-прежнему актуальны? - PullRequest
2 голосов
/ 03 июня 2010

Я все еще вижу совет по использованию типов LPTSTR / TCHAR и т. Д. Вместо LPWSTR / WCHAR. Я считаю, что Unicode был хорошо представлен в Win2k, и я, честно говоря, больше не пишу код для Windows 98. (За исключением особых случаев, конечно.) Учитывая, что меня не волнует Windows 98 (или, тем более, ME), так как они десятилетние ОС, есть ли причина использовать типы совместимости TCHAR и т. Д. ? Почему все же советуют людям использовать TCHAR - какую выгоду это дает от использования WCHAR напрямую?

Ответы [ 2 ]

1 голос
/ 03 июня 2010

Если кто-то скажет вам пройти до 1 000 000 строк не _UNICODE C ++ с большим количеством объявлений, использующих char вместо wchar_t или TCHAR или WCHAR, вам лучше быть готовым справиться с не-Unicode Win32 API. Крупномасштабное преобразование довольно дорого, и, возможно, источник-о-деньги не готов заплатить за него.

Что касается нового кода, ну, есть так много примеров кода, использующего TCHAR, что его может быть легче вырезать и вставлять, и в некоторых случаях есть некоторое трение между WCHAR как wchar_t и WCHAR как unsigned short.

Кто знает, может быть, однажды MS добавит тип данных UTF-32 в TCHAR?

0 голосов
/ 08 июня 2010

На самом деле версии функций в юникоде были представлены в Win32 в 1993 году, в Windows NT 3.1. Фактически, в ОС на базе NT почти все функции * A просто конвертируются в Unicode и вызывают версию * W внутри. Кроме того, поддержка * W функций в 9x существует через Microsoft Layer для Unicode .

Для новых программ я бы определенно рекомендовал использовать макросы TCHAR или WCHAR напрямую. Я сомневаюсь, что MS будет добавлять поддержку любых других размеров символов при жизни NT. Я полагаю, что для существующих баз кода это будет зависеть от того, насколько важно поддерживать Unicode против стоимости его исправления. Для обеспечения обратной совместимости функции * A должны оставаться в Win32 навсегда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...