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 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 _TCHAR
obecný 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