Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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