Windows-Datentypen für Zeichenfolgen
Die meisten Zeichenfolgenvorgänge können dieselbe Logik für Unicode- und für Windows-Codeseitenverwenden. Der einzige Unterschied besteht darin, dass die Grundlegende Einheit des Vorgangs ein 16-Bit-Zeichen (auch als breites Zeichen bezeichnet) für Unicode und ein 8-Bit-Zeichen für Windows-Codeseiten ist. Die Windows-Headerdateien stellen mehrere Typdefinitionen bereit, die das Erstellen von Quellen erleichtern, die für Unicode oder für Windows-Codeseiten kompiliert werden können.
Windows unterstützt drei Sätze von Zeichen- und Zeichenfolgendatentypen: eine Reihe generischer Typdefinitionen, die für Unicode- oder Windows-Codeseiten kompiliert werden können, und zwei Sätze bestimmter Typdefinitionen. Eine Gruppe bestimmter Typdefinitionen ist für die Verwendung mit Unicode vorgesehen, und die andere ist für die Verwendung mit Windows-Codeseiten vorgesehen.
Eine Anwendung mit generischen Datentypen kann für Unicode kompiliert werden, indem sie einfach "UNICODE" definieren, bevor die #include Anweisungen für die Headerdateien oder während der Kompilierung angegeben werden. Neue Windows-Anwendungen sollten Unicode verwenden, um die Inkonsistenzen unterschiedlicher Codeseiten zu vermeiden und die Lokalisierung zu vereinfachen. Sie sollten mit generischen Datentypen geschrieben werden und "UNICODE" definieren, um diese Typen in Unicode-Typen zu kompilieren. An den wenigen Stellen, an denen eine Anwendung mit 8-Bit-Zeichendaten arbeiten muss, kann sie explizit die Typen für Windows-Codeseiten verwenden.
Die Möglichkeit, die generischen Typen in Typen für Windows-Codeseiten zu kompilieren, besteht hauptsächlich zur Unterstützung von Legacyanwendungen. Um für Windows-Codeseiten zu kompilieren, wird von der Anwendung nur die UNICODE-Definition weggelassen.
Das folgende Beispiel zeigt die Methode, die in den Windows-Headerdateien zum Definieren der drei Datasets verwendet wird. Informationen zur Implementierung finden Sie in der Winnt.h-Headerdatei.
// Generic types
#ifdef UNICODE
typedef wchar_t TCHAR;
#else
typedef unsigned char TCHAR;
#endif
typedef TCHAR *LPTSTR, *LPTCH;
// 8-bit character specific
typedef unsigned char CHAR;
typedef CHAR *LPSTR, *LPCH;
// Unicode specific (wide characters)
typedef unsigned wchar_t WCHAR;
typedef WCHAR *LPWSTR, *LPWCH;
Der Buchstabe "T" in einer Typdefinition, z. B. TCHAR oder LPTSTR, bezeichnet einen generischen Typ, der für Windows-Codeseiten oder Unicode kompiliert werden kann. Der Buchstabe "W" in einer Typdefinition, z. B. WCHAR oder LPWSTR, bezeichnet einen Unicode-Typ. Da Windows-Codeseiten das ältere Formular aufweisen, verfügen sie über einfache Typdefinitionen, z. B. CHAR und LPSTR. Eine vollständige Beschreibung der Datentypen in Windows finden Sie unter Windows-Datentypen.
Verwandte Themen