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 _tcsrevstrrev 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