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 _TCHAR
danych 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