Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Блок, относящийся только к системам Майкрософт
Чтобы упростить написание кода для разных международных рынков, в библиотеке времени выполнения Microsoft имеются специфичные для Microsoft "универсальные текстовые" сопоставления для многих типов данных, подпрограмм и других объектов. Эти сопоставления определены в TCHAR.H. Данные сопоставления имен можно использовать для написания универсального кода, который можно компилировать в любом из трех типов наборов символов (ASCII (однобайтовая кодировка), многобайтовая кодировка или Юникод), в зависимости от константы манифеста, указанной с помощью оператора #define. Универсальные текстовые сопоставления — это расширения Майкрософт, несовместимые с ANSI.
Директивы препроцессора для сопоставлений универсального текста
#define |
Скомпилированная версия | Пример |
|---|---|---|
_UNICODE |
Юникод (расширенные символы) |
_tcsrev соответствует _wcsrev |
_MBCS |
Многобайтовые символы |
_tcsrev соответствует _mbsrev |
Нет (значение по умолчанию: оба _UNICODE и _MBCS не определено) |
Однобайтовая кодировка (ASCII) |
_tcsrev соответствует strrev |
Например, функция универсального текста _tcsrev, определенная в TCHAR.H, сопоставляется с _mbsrev тем, определена ли _MBCS она в программе или _wcsrev_UNICODE если она определена. В противном случае _tcsrev сопоставляется с strrev.
Тип _TCHARданных универсального текста, также определенный в TCHAR.H, сопоставляется с типом char , если _MBCS определен, типом wchar_t , если _UNICODE определен, и типом char , если ни константы не определены. Другие сопоставления типов данных предоставляются TCHAR.H для удобства программирования, но _TCHAR это наиболее полезный тип.
Сопоставления типов данных универсального текста
| Имя универсального текстового типа данных | SBCS (_UNICODEне _MBCS определено) |
_MBCS Определенные |
_UNICODE Определенные |
|---|---|---|---|
_TCHAR |
char |
char |
wchar_t |
_TINT |
int |
int |
wint_t |
_TSCHAR |
signed char |
signed char |
wchar_t |
_TUCHAR |
unsigned char |
unsigned char |
wchar_t |
_TXCHAR |
char |
unsigned char |
wchar_t |
_T или _TEXT |
Не действует (удаляется препроцессором) | Не действует (удаляется препроцессором) |
L (преобразует следующий символ или строку в аналог в Юникоде) |
Полный список универсальных текстовых сопоставлений подпрограмм, переменных и других объектов см . в сопоставлениях универсального текста.
В следующих примерах кода показано использование функций _TCHAR и _tcsrev для сопоставления моделям многобайтовой кодировки, Юникод и однобайтовой кодировки.
_TCHAR *RetVal, *szString;
RetVal = _tcsrev(szString);
Если указано _MBCS, препроцессор сопоставляет предыдущий фрагмент следующему коду:
char *RetVal, *szString;
RetVal = _mbsrev(szString);
Если указано _UNICODE, препроцессор сопоставляет тот же фрагмент следующему коду:
wchar_t *RetVal, *szString;
RetVal = _wcsrev(szString);
_MBCS Если оба и _UNICODE не определены, препроцессор сопоставляет фрагмент с кодом ASCII с одним байтом, как показано ниже.
char *RetVal, *szString;
RetVal = strrev(szString);
Эти макросы позволяют создавать, поддерживать и компилировать один файл исходного кода с помощью подпрограмм, относящихся ко всем трем типам наборов символов.
Завершение блока, относящегося только к системам Майкрософт
См. также
Сопоставления универсального текста
Сопоставления типов данных
Сопоставления констант и глобальных переменных
Сопоставления подпрограмм
Пример универсальной текстовой программы