Použití mapování obecného textu

Specifické pro Microsoft

Pro zjednodušení vývoje kódu pro různé mezinárodní trhy poskytuje knihovna Microsoft run-time mapování "generic-text" specifické pro Microsoft pro mnoho datových typů, rutin a dalších objektů. Tato mapování jsou definována v TCHAR.H. Pomocí těchto mapování názvů můžete napsat obecný kód, který lze zkompilovat pro libovolný ze tří druhů znakových sad: ASCII (SBCS), MBCS nebo Unicode v závislosti na konstantě manifestu #define , kterou definujete pomocí příkazu. Mapování obecného textu jsou rozšíření Microsoftu, která nejsou kompatibilní s ANSI.

Direktivy preprocesoru pro mapování obecného textu

#define Kompilovaná verze Příklad
_UNICODE Unicode (široký znak) _tcsrev mapuje na _wcsrev
_MBCS Vícebajtový znak _tcsrev mapuje na _mbsrev
Žádná (výchozí hodnota: obě _UNICODE i _MBCS nedefinovaná) SBCS (ASCII) _tcsrev mapuje na strrev

Například obecná textová funkce _tcsrevdefinovaná v TCHAR. H, mapuje se na mbsrev to, zda MBCS byl definován v programu nebo _wcsrev pokud _UNICODE byl definován. V opačném případě _tcsrev se mapuje na strrev.

Datový typ _TCHARobecný text , definovaný také v TCHAR. H, mapuje se na typ char , pokud _MBCS je definován, na typ wchar_t , pokud _UNICODE je definována, a typ char , pokud není definována žádná konstanta. Další mapování datových typů jsou k dispozici v TCHAR. H pro usnadnění programování, ale _TCHAR je to typ, který je nejužitečnější.

Mapování datových typů generic-text

Název datového typu Obecný text SBCS (_UNICODE, _MBCS není definováno) _MBCS definováno _UNICODE definováno
_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 nebo _TEXT Žádný efekt (odebraný preprocesorem) Žádný efekt (odebraný preprocesorem) L (převede následující znak nebo řetězec na jeho protějšek Unicode)

Úplný seznam mapování obecných textů rutin, proměnných a dalších objektů naleznete v tématu Mapování obecného textu.

Následující fragmenty kódu ilustrují použití _TCHAR a _tcsrev mapování na modely MBCS, Unicode a SBCS.

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

Pokud MBCS je definovaný, preprocesor mapuje předchozí fragment na následující kód:

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

Pokud _UNICODE je definovaný, preprocesor mapuje stejný fragment na následující kód:

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

Pokud není definovaný ani _MBCS_UNICODE žádný, preprocesor mapuje fragment na kód ASCII s jedním bajtem následujícím způsobem:

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

Tato makra umožňují psát, udržovat a kompilovat jeden soubor zdrojového kódu pomocí rutin specifických pro všechny tři druhy znakových sad.

END Microsoft Specific

Viz také

Mapování obecného textu
Mapování datových typů
Mapování konstantních a globálních proměnných
Mapování rutin
Ukázkový obecný textový program