Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
De flesta strängåtgärder kan använda samma logik för Unicode- och för Windows-kodsidor. Den enda skillnaden är att den grundläggande åtgärdsenheten är ett 16-bitarstecken (även kallat ett brett tecken) för Unicode och ett 8-bitarstecken för Windows-kodsidor. Windows-huvudfilerna innehåller flera typdefinitioner som gör det enkelt att skapa källor som kan kompileras för Unicode eller för Windows-kodsidor.
Windows stöder tre uppsättningar tecken- och strängdatatyper: en uppsättning generiska typdefinitioner som kan kompileras för unicode- eller Windows-kodsidor och två uppsättningar med specifika typdefinitioner. En uppsättning specifika typdefinitioner är avsedda att användas med Unicode, och den andra används med Windows-kodsidor.
Ett program som använder generiska datatyper kan kompileras för Unicode genom att helt enkelt definiera "UNICODE" före #include-uttrycken för huvudfilerna eller under kompileringen. Nya Windows-program bör använda Unicode för att undvika inkonsekvenser i olika kodsidor och för att förenkla lokaliseringen. De ska skrivas med generiska datatyper och definiera "UNICODE" för att kompilera dessa typer till Unicode-typer. På de få platser där ett program måste fungera med 8-bitars teckendata kan det explicit använda typerna för Windows-kodsidor.
Möjligheten att kompilera de generiska typerna i typer för Windows-kodsidor finns främst för att stödja äldre program. För att kompilera för Windows-kodsidor utelämnar programmet bara UNICODE-definitionen.
I följande exempel visas den metod som används i Windows-huvudfilerna för att definiera de tre uppsättningarna med datatyper. För implementeringen, se Winnt.h-huvudfilen.
// 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;
Bokstaven "T" i en typdefinition, till exempel TCHAR eller LPTSTR, anger en allmän typ som kan kompileras för antingen Windows-kodsidor eller Unicode. Bokstaven "W" i en typdefinition, till exempel WCHAR eller LPWSTR, anger en Unicode-typ. Eftersom Windows-kodsidor är av det äldre formatet har de enkla typdefinitioner, till exempel CHAR och LPSTR. En fullständig beskrivning av datatyper i Windows finns i Windows-datatyper.
Relaterade ämnen