Tipos de dados do Windows para cadeias de caracteres
A maioria das operações de cadeia de caracteres pode usar a mesma lógica para Unicode e para páginas de código do Windows. A única diferença é que a unidade básica de operação é um caractere de 16 bits (também conhecido como caractere largo) para Unicode e um caractere de 8 bits para páginas de código do Windows. Os arquivos de cabeçalho do Windows fornecem várias definições de tipo que facilitam a criação de fontes que podem ser compiladas para Unicode ou para páginas de código do Windows.
O Windows oferece suporte a três conjuntos de tipos de dados de caracteres e cadeias de caracteres: um conjunto de definições de tipo genéricas que podem ser compiladas para páginas de código Unicode ou Windows e dois conjuntos de definições de tipo específicas. Um conjunto de definições de tipo específicas é para uso com Unicode e o outro é para uso com páginas de código do Windows.
Um aplicativo usando tipos de dados genéricos pode ser compilado para Unicode simplesmente definindo "UNICODE" antes das instruções #include para os arquivos de cabeçalho ou durante a compilação. Novos aplicativos do Windows devem usar Unicode para evitar as inconsistências de páginas de código variadas e simplificar a localização. Eles devem ser escritos com tipos de dados genéricos e devem definir "UNICODE" para compilar esses tipos em tipos Unicode. Nos poucos lugares onde um aplicativo deve trabalhar com dados de caracteres de 8 bits, ele pode fazer uso explícito dos tipos para páginas de código do Windows.
A capacidade de compilar os tipos genéricos em tipos para páginas de código do Windows existe principalmente para suportar aplicativos herdados. Para compilar para páginas de código do Windows, o aplicativo apenas omite a definição UNICODE.
O exemplo a seguir mostra o método usado nos arquivos de cabeçalho do Windows para definir os três conjuntos de tipos de dados. Para a implementação, consulte o arquivo de cabeçalho 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;
A letra "T" em uma definição de tipo, por exemplo, TCHAR ou LPTSTR, designa um tipo genérico que pode ser compilado para páginas de código do Windows ou Unicode. A letra "W" em uma definição de tipo, por exemplo, WCHAR ou LPWSTR, designa um tipo Unicode. Como as páginas de código do Windows são da forma mais antiga, elas têm definições de tipo simples, como CHAR e LPSTR. Para obter uma descrição completa dos tipos de dados no Windows, consulte Tipos de dados do Windows.
Tópicos relacionados