Dela via


Använda generiska textmappningar

Microsoft-specifik

För att förenkla kodutvecklingen för olika internationella marknader tillhandahåller Microsofts run-time-bibliotek Microsoft-specifika "generic-text"-mappningar för många datatyper, rutiner och andra objekt. Dessa mappningar definieras i TCHAR.H. Du kan använda dessa namnmappningar för att skriva allmän kod som kan kompileras för någon av de tre typerna av teckenuppsättningar: ASCII (SBCS), MBCS eller Unicode, beroende på en manifestkonstant som du definierar med hjälp av en #define instruktion. Mappningar med allmän text är Microsoft-tillägg som inte är ANSI-kompatibla.

Förprocessordirektiv för allmän textmappning

#define Kompilerad version Exempel
_UNICODE Unicode (brett tecken) _tcsrev mappar till _wcsrev
_MBCS Flerbytestecken _tcsrev mappar till _mbsrev
Ingen (standard: både _UNICODE och _MBCS inte definierad) SBCS (ASCII) _tcsrev mappar till strrev

Till exempel mappar funktionen _tcsrevgeneric-text , som definieras i TCHAR.H, till _mbsrev om _MBCS har definierats i ditt program eller till _wcsrev om _UNICODE har definierats. Annars _tcsrev mappas till strrev.

Datatypen _TCHARgeneric-text , som också definieras i TCHAR.H, mappar för att skriva char om _MBCS har definierats, för att skriva wchar_t om _UNICODE har definierats och för att skriva char om ingen av konstanterna har definierats. Andra datatypsmappningar finns i TCHAR.H för att underlätta programmeringen, men _TCHAR är den typ som är mest användbar.

Generic-Text datatypsmappningar

Namn på allmän textdatatyp SBCS (_UNICODEinte _MBCS definierat) _MBCS definierad _UNICODE definierad
_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 eller _TEXT Ingen effekt (tas bort av förprocessorn) Ingen effekt (tas bort av förprocessorn) L (konverterar följande tecken eller sträng till dess Unicode-motsvarighet)

En fullständig lista över allmän textmappningar av rutiner, variabler och andra objekt finns i Generic-textmappningar.

Följande kodfragment illustrerar användningen av _TCHAR och _tcsrev för mappning till MBCS-, Unicode- och SBCS-modellerna.

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

Om _MBCS har definierats mappar förprocessorn föregående fragment till följande kod:

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

Om _UNICODE har definierats mappar förprocessorn samma fragment till följande kod:

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

Om både _MBCS och _UNICODE inte har definierats mappar förprocessorn fragmentet till ASCII-kod med en enda byte, enligt följande:

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

Med de här makrona kan du skriva, underhålla och kompilera en enda källkodsfil med hjälp av rutiner som är specifika för alla tre typer av teckenuppsättningar.

Avsluta Microsoft Specifik

Se även

Mappningar med allmän text
Datatypsmappningar
Konstanta och globala variabelmappningar
Rutinmässiga mappningar
Ett exempel på ett generiskt textprogram