Usando mapeamentos de texto genérico
Específicos do Microsoft
Para simplificar o desenvolvimento de código para vários mercados internacionais, a biblioteca de tempo de execução do Microsoft fornece mapeamentos de "texto genérico" específicas da Microsoft para muitos tipos de dados, rotinas e outros objetos.Esses mapeamentos são definidos em TCHAR.H.Você pode usar esses mapeamentos de nome para escrever o código genérico que pode ser compilado para qualquer um dos três tipos de conjuntos de caracteres: ASCII (SBCS), MBCS ou Unicode, dependendo de uma constante de manifesto que você define usando um #define instrução.Mapeamentos de texto genérico são extensões do Microsoft que não sejam ANSI compatível.
Diretivas de pré-processamento para mapeamentos de texto genérico
# define |
Versão compilada |
Exemplo |
---|---|---|
_UNICODE |
Unicode (caracteres largos) |
_tcsrevmapeia para_wcsrev |
_MBCS |
Caracteres multibyte |
_tcsrevmapeia para_mbsrev |
Nenhum (o padrão: nem _UNICODE nem _MBCS definido) |
SBCS (ASCII) |
_tcsrev mapeia parastrrev |
Por exemplo, a função de texto genérico _tcsrev, definido em TCHAR.H, mapeia para mbsrev se MBCS foi definido no seu programa, ou para _wcsrev se _UNICODE foi definido.Caso contrário, _tcsrev mapeia para strrev.
O tipo de dados de texto genérico _TCHAR, também definido no TCHAR.H, mapeia digitar char se _MBCS for definido, digite wchar_t se _UNICODE for definido e digitar char se nenhuma constante foi definida.Outros mapeamentos de tipo de dados são fornecidos no TCHAR.H para conveniência de programação, mas _TCHAR é o tipo que é mais útil.
Mapeamentos de tipo de dados de texto genérico
Nome do tipo de dados de texto genérico |
SBCS (_ Unicode, _ MBCS do arquivo não definido) |
_ MBCS do arquivo definido |
_ Unicode definido |
---|---|---|---|
_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 |
_Tou_TEXT |
Nenhum efeito (removido pelo pré-processador) |
Nenhum efeito (removido pelo pré-processador) |
L(converte após o caractere ou seqüência de caracteres à sua contraparte Unicode) |
Para obter uma lista completa dos mapeamentos de texto genérico de rotinas, variáveis e outros objetos, consulte Mapeamentos Generic Text.
Os fragmentos de código a seguir ilustram o uso de _TCHAR e _tcsrev para mapear os modelos MBCS, Unicode e SBCS.
_TCHAR *RetVal, *szString;
RetVal = _tcsrev(szString);
Se MBCS foi definido, o pré-processador mapeia o fragmento anterior para o código a seguir:
char *RetVal, *szString;
RetVal = _mbsrev(szString);
Se _UNICODE foi definido, o pré-processador mapeia o mesmo fragmento para o código a seguir:
wchar_t *RetVal, *szString;
RetVal = _wcsrev(szString);
Se nenhuma das _MBCS nem _UNICODE foi definido, o pré-processador mapeia o fragmento de código ASCII de byte único, da seguinte forma:
char *RetVal, *szString;
RetVal = strrev(szString);
Assim, você pode escrever, manter e compilar um arquivo de código fonte única para executar com rotinas que são específicas para qualquer um dos três tipos de conjuntos de caracteres.
Específicos do Microsoft final