Verwenden von Zuordnungen für generischen Text
Microsoft-spezifisch
Um die Codeentwicklung für internationale Märkte zu vereinfachen, stellt die Microsoft-Laufzeitbibliothek für viele Datentypen, Routinen und andere Objekte Microsoft-spezifische Zuordnungen für generischen Text zur Verfügung. Diese Zuordnungen werden in TCHAR.H definiert. Sie können mithilfe dieser Namenszuordnungen generischen Code schreiben, der für die folgenden drei Arten von Zeichensätzen kompiliert werden kann: ASCII (SBCS), MBCS oder Unicode. Dies hängt von der Manifestkonstante ab, die Sie mit einer #define
-Anweisung definieren. Generische Textzuordnungen sind Microsoft-Erweiterungen, die nicht ANSI-kompatibel sind.
Präprozessordirektiven für generische Textzuordnungen
#define |
Kompilierte Version | Beispiel |
---|---|---|
_UNICODE |
Unicode (Breitzeichen) | _tcsrev ist _wcsrev zugeordnet. |
_MBCS |
Mehrbytezeichen | _tcsrev ist _mbsrev zugeordnet. |
Keine (Standard: beide _UNICODE und _MBCS nicht definiert) |
SBCS (ASCII) | _tcsrev ist strrev zugeordnet. |
Die in TCHAR.H definierte generische Textfunktion _tcsrev
wird der mbsrev
-Funktion zugeordnet, wenn MBCS
in Ihrem Programm definiert wurde, oder sie wird _wcsrev
zugeordnet, wenn _UNICODE
definiert wurde. Andernfalls wird _tcsrev
strrev
zugeordnet.
Der generische Text vom Datentyp _TCHAR
, der auch in TCHAR.H definiert ist, wird dem Typ char
zugeordnet, wenn _MBCS
definiert ist; dem Typ wchar_t
, wenn _UNICODE
definiert ist; und dem Typ char
, wenn keine Konstante definiert ist. Zur Vereinfachung der Programmierung werden in TCHAR.H weitere Datentypzuordnungen zur Verfügung gestellt; _TCHAR
ist jedoch die hilfreichste Zuordnung.
Generische Textzuordnungen von Datentypen
Datentypname für generischen Text | SBCS (_UNICODE & MBCS nicht definiert) | _MBCS definiert | _UNICODE definiert |
---|---|---|---|
_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 oder _TEXT |
Ohne Auswirkung (wird vom Präprozessor entfernt) | Ohne Auswirkung (wird vom Präprozessor entfernt) | L (konvertiert das nächste Zeichen oder die nächste Zeichenfolge in die Unicode-Entsprechung) |
Eine vollständige Liste der generischen Textzuordnungen von Routinen, Variablen und anderen Objekten finden Sie unter Generic-Text-Zuordnungen.
Aus den folgenden Codefragmenten geht hervor, wie _TCHAR
und _tcsrev
für die Zuordnung zu den MBCS-, Unicode- und SBCS-Modellen verwendet werden.
_TCHAR *RetVal, *szString;
RetVal = _tcsrev(szString);
Wenn MBCS
definiert wurde, ordnet der Präprozessor dem vorangehenden Fragment folgenden Code zu:
char *RetVal, *szString;
RetVal = _mbsrev(szString);
Wenn _UNICODE
definiert wurde, ordnet der Präprozessor diesem Fragment folgenden Code zu:
wchar_t *RetVal, *szString;
RetVal = _wcsrev(szString);
Wenn beide _MBCS
nicht definiert wurden _UNICODE
, ordnet der Präprozessor das Fragment wie folgt einem ASCII-Code mit einem Byte zu:
char *RetVal, *szString;
RetVal = strrev(szString);
Mit diesen Makros können Sie schreiben, Standard beibehalten und eine einzelne Quellcodedatei mithilfe von Routinen kompilieren, die für alle drei Arten von Zeichensätzen spezifisch sind.
Ende Microsoft-spezifisch
Siehe auch
Generische Textzuordnungen
Datentypzuordnungen
Konstanten- und globalen Variablenzuordnungen
Routine-Zuordnungen
Beispiel für ein generisches Textprogramm