Utilizzo di mapping testo genericoUsing Generic-Text Mappings

Sezione specifica MicrosoftMicrosoft Specific

Per semplificare lo sviluppo di codice per vari mercati internazionali, la libreria di runtime di Microsoft fornisce mapping di testo generico specifiche di Microsoft per molti tipi di dati, routine e altri oggetti.To simplify code development for various international markets, the Microsoft run-time library provides Microsoft-specific "generic-text" mappings for many data types, routines, and other objects. I mapping sono definiti in TCHAR.H.These mappings are defined in TCHAR.H. È possibile utilizzare questi mapping di nomi per scrivere codice generico che può essere compilato per uno qualsiasi dei tre tipi di set di caratteri: ASCII (SBCS), MBCS o Unicode, in base a una costante di manifesto definita utilizzando un'istruzione #define.You can use these name mappings to write generic code that can be compiled for any of the three kinds of character sets: ASCII (SBCS), MBCS, or Unicode, depending on a manifest constant you define using a #define statement. I mapping di testo generico sono estensioni Microsoft non compatibili con ANSI.Generic-text mappings are Microsoft extensions that are not ANSI compatible.

Direttive del preprocessore per i mapping di testo genericoPreprocessor Directives for Generic-Text Mappings

#define#define Versione compilataCompiled version EsempioExample
_UNICODE Unicode (caratteri wide)Unicode (wide-character) _tcsrev viene mappata a _wcsrev_tcsrev maps to _wcsrev
_MBCS Caratteri multibyteMultibyte-character _tcsrev viene mappata a _mbsrev_tcsrev maps to _mbsrev
Nessuno. Questa è l'impostazione predefinita: non viene definito né _UNICODE_MBCS.None (the default: neither _UNICODE nor _MBCS defined) SBCS (ASCII)SBCS (ASCII) _tcsrev viene mappata a strrev_tcsrev maps to strrev

Ad esempio, la funzione di testo generico _tcsrev, definita in TCHAR.H, viene mappata a mbsrev se nel programma è stata definita la versione MBCS oppure a _wcsrev se è stata definita la versione _UNICODE.For example, the generic-text function _tcsrev, defined in TCHAR.H, maps to mbsrev if MBCS has been defined in your program, or to _wcsrev if _UNICODE has been defined. In caso contrario, _tcsrev viene mappata a strrev.Otherwise _tcsrev maps to strrev.

Il tipo di dati di testo generico _TCHAR, anche definito in TCHAR.H, corrisponde al tipo char se _MBCS è definito, al tipo wchar_t se _UNICODE è definito e al tipo char se nessuna costante è definita.The generic-text data type _TCHAR, also defined in TCHAR.H, maps to type char if _MBCS is defined, to type wchar_t if _UNICODE is defined, and to type char if neither constant is defined. Per facilitare la programmazione, vengono forniti in TCHAR.H altri mapping del tipo di dati, ma _TCHAR è il tipo più utile.Other data type mappings are provided in TCHAR.H for programming convenience, but _TCHAR is the type that is most useful.

Mapping dei tipi di dati di testo genericoGeneric-Text Data Type Mappings

Nome del tipo di dati di testo genericoGeneric-text data type name SBCS (_UNICODE, _MBCS non definiti)SBCS (_UNICODE, _MBCS not defined) _MBCS definito_MBCS defined _UNICODE definito_UNICODE defined
_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
_T o _TEXT_T or _TEXT Nessun effetto (rimosso dal preprocessore)No effect (removed by preprocessor) Nessun effetto (rimosso dal preprocessore)No effect (removed by preprocessor) L (converte il carattere o la stringa seguente nell'equivalente Unicode)L (converts following character or string to its Unicode counterpart)

Per un elenco completo dei mapping di testo generico di routine, variabili e altri oggetti, vedere Mapping testo generico.For a complete list of generic-text mappings of routines, variables, and other objects, see Generic-Text Mappings.

Nei seguenti frammenti di codice viene illustrato l'utilizzo di _TCHAR e _tcsrev per il mapping a modelli MBSC, Unicode e SBCS.The following code fragments illustrate the use of _TCHAR and _tcsrev for mapping to the MBCS, Unicode, and SBCS models.

_TCHAR *RetVal, *szString;  
RetVal = _tcsrev(szString);  

Se MBCS è stato definito, il preprocessore esegue il mapping del frammento precedente al codice seguente:If MBCS has been defined, the preprocessor maps the preceding fragment to the following code:

char *RetVal, *szString;  
RetVal = _mbsrev(szString);  

Se _UNICODE è stato definito, il preprocessore esegue il mapping dello stesso frammento al codice seguente:If _UNICODE has been defined, the preprocessor maps the same fragment to the following code:

wchar_t *RetVal, *szString;  
RetVal = _wcsrev(szString);  

Se non è stato definito né _MBCS_UNICODE, il preprocessore esegue il mapping del frammento al codice ASCII a byte singolo come segue:If neither _MBCS nor _UNICODE has been defined, the preprocessor maps the fragment to single-byte ASCII code, as follows:

char *RetVal, *szString;  
RetVal = strrev(szString);  

Pertanto, è possibile scrivere, mantenere e compilare un unico file di codice sorgente per eseguirlo con routine specifiche per uno dei tre tipi di set di caratteri.Thus you can write, maintain, and compile a single source code file to run with routines that are specific to any of the three kinds of character sets.

Fine sezione specifica MicrosoftEND Microsoft Specific

Vedere ancheSee Also

Mapping testo generico Generic-Text Mappings
Mapping dei tipi di dati Data Type Mappings
Mapping costanti e variabili globali Constant and Global Variable Mappings
Mapping di routine Routine Mappings
Programma di testo generico di esempioA Sample Generic-Text Program