Datové typy Windows pro řetězce
Většina operací řetězců může použít stejnou logiku pro Unicode a pro znakové stránky systému Windows. Jediným rozdílem je, že základní jednotka operace je 16bitový znak (označovaný také jako široký znak) pro Unicode a 8bitový znak pro znakové stránky Windows. Soubory hlaviček systému Windows poskytují několik definic typů, které usnadňují vytváření zdrojů, které lze zkompilovat pro Unicode nebo pro kódové stránky Systému Windows.
Systém Windows podporuje tři sady datových typů znaků a řetězců: sadu obecných definic typů, které lze kompilovat pro znakové stránky Unicode nebo Windows, a dvě sady definic konkrétního typu. Jedna sada definic konkrétního typu je určená pro použití s kódováním Unicode a druhá je určená pro použití se stránkami kódu systému Windows.
Aplikaci používající obecné datové typy lze zkompilovat pro Unicode jednoduše tak, že před příkazy #include pro soubory hlaviček nebo během kompilace definuje "UNICODE". Nové aplikace pro Windows by měly používat Unicode, aby nedocházelo k nekonzistence různých znakových stránek a ke zjednodušení lokalizace. Měly by být napsané pomocí obecných datových typů a měly by definovat kódování UNICODE, aby bylo možné tyto typy zkompilovat do typů Unicode. Na několika místech, kde musí aplikace pracovat s 8bitovými daty znaků, může explicitně používat typy pro znakové stránky Windows.
Schopnost kompilovat obecné typy do typů pro znakové stránky Windows existuje hlavně pro podporu starších aplikací. Pro kompilaci pro znakové stránky Systému Windows aplikace pouze vynechá definici UNICODE.
Následující příklad ukazuje metodu použitou v hlavičkových souborech Windows k definování tří sad datových typů. Informace o implementaci naleznete v souboru hlavičky Winnt.h.
// 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;
Písmeno "T" v definici typu, například TCHAR nebo LPTSTR, určuje obecný typ, který lze zkompilovat pro znakové stránky Systému Windows nebo Unicode. Písmeno "W" v definici typu, například WCHAR nebo LPWSTR, určuje typ Unicode. Vzhledem k tomu, že znakové stránky Windows jsou staršího formátu, mají jednoduché definice typu, jako jsou CHAR a LPSTR. Úplný popis datových typů ve Windows najdete v tématu datových typů Windows.
Související témata