Sdílet prostřednictvím


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 _tcsrev, definovaná v TCHAR.H, mapuje _mbsrev , zda _MBCS byla definována v programu nebo _wcsrev pokud _UNICODE byla definována. V opačném případě _tcsrev se mapuje na strrev.

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

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

Název datového typu Obecný text SBCS (_UNICODE, _MBCS není definováno) _MBCS definovaný _UNICODE definovaný
_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 Specifikace Microsoftu

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