Udostępnij za pośrednictwem


Mapowania zwykłego tekstu

Specyficzne dla firmy Microsoft

Aby uprościć tworzenie kodu na różnych rynkach międzynarodowych, biblioteka czasu wykonywania firmy Microsoft udostępnia mapowania specyficzne dla firmy Microsoft "ogólny tekst" dla wielu typów danych, procedur i innych obiektów. Te mapowania są definiowane w TCHAR.H. Za pomocą tych mapowań nazw można napisać kod ogólny, który można skompilować dla dowolnego z trzech rodzajów zestawów znaków: ASCII (SBCS), MBCS lub Unicode, w zależności od stałej manifestu definiowanej #define przy użyciu instrukcji . Mapowania tekstu ogólnego to rozszerzenia firmy Microsoft, które nie są zgodne ze standardem ANSI.

Dyrektywy preprocesora dla mapowań tekstu ogólnego

#define Skompilowana wersja Przykład
_UNICODE Unicode (znak szeroki) _tcsrev mapuje na _wcsrev
_MBCS Znak wielobajtowy _tcsrev mapuje na _mbsrev
Brak (wartość domyślna: zarówno, jak _UNICODE i _MBCS nie zdefiniowana) SBCS (ASCII) _tcsrev mapuje na strrev

Na przykład funkcja generic-text zdefiniowana w TCHAR _tcsrev. H, mapuje na mbsrev to, czy MBCS został zdefiniowany w programie, lub do _wcsrev , czy _UNICODE został zdefiniowany. W przeciwnym razie _tcsrev mapuje na strrev.

Typ _TCHARdanych ogólnego tekstu , zdefiniowany również w TCHAR. H, mapuje na typ char , jeśli _MBCS jest zdefiniowany, typ wchar_t , jeśli _UNICODE jest zdefiniowany, i typ char , jeśli żadna stała nie jest zdefiniowana. Inne mapowania typów danych są dostępne w usłudze TCHAR. H dla wygody programowania, ale _TCHAR jest typem, który jest najbardziej przydatny.

Mapowania typów danych tekstu ogólnego

Nazwa typu danych tekstu ogólnego SBCS (_UNICODE, nie zdefiniowano _MBCS) _MBCS zdefiniowano _UNICODE zdefiniowano
_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 lub _TEXT Brak efektu (usunięte przez preprocesor) Brak efektu (usunięte przez preprocesor) L (konwertuje następujący znak lub ciąg na jego odpowiednik Unicode)

Aby uzyskać pełną listę mapowań tekstu ogólnego tekstu procedur, zmiennych i innych obiektów, zobacz Ogólne mapowania tekstu.

Poniższe fragmenty kodu ilustrują użycie elementów _TCHAR i _tcsrev do mapowania na modele MBCS, Unicode i SBCS.

_TCHAR *RetVal, *szString;
RetVal = _tcsrev(szString);

Jeśli MBCS został zdefiniowany, preprocesor mapuje poprzedni fragment na następujący kod:

char *RetVal, *szString;
RetVal = _mbsrev(szString);

Jeśli _UNICODE został zdefiniowany, preprocesor mapuje ten sam fragment na następujący kod:

wchar_t *RetVal, *szString;
RetVal = _wcsrev(szString);

Jeśli obie _MBCS metody i _UNICODE nie zostały zdefiniowane, preprocesor mapuje fragment na kod ASCII jedno bajtów w następujący sposób:

char *RetVal, *szString;
RetVal = strrev(szString);

Te makra umożliwiają pisanie, konserwowanie i kompilowanie pojedynczego pliku kodu źródłowego przy użyciu procedur specyficznych dla wszystkich trzech rodzajów zestawów znaków.

END Microsoft Specific

Zobacz też

Mapowania tekstu ogólnego
Mapowania typów danych
Mapowania zmiennych stałych i globalnych
Mapowania rutynowe
Przykładowy program tekstowy ogólny