次の方法で共有


汎用テキスト マップの使用

Microsoft 固有の仕様 →

さまざまな国際市場向けのコード開発を簡略化するために、Microsoft ランタイム ライブラリには、多くのデータ型、ルーチン、その他のオブジェクトに対して Microsoft 固有の汎用テキスト マップが用意されています。 汎用テキスト マップは TCHAR.H で定義されています。 これら名のマッピングを使用して、3 つの種類の文字セットをコンパイルできるジェネリック コードを記述できます。ASCII (SBCS)、MBCS、Unicode、定義を使用して、マニフェスト定数に応じて、#defineステートメント。 汎用テキストのマップは Microsoft 固有の拡張機能であり、ANSI とは互換性がありません。

汎用テキスト マッピング用のプリプロセッサ ディレクティブ

#define

コンパイル後の状態

_UNICODE

Unicode (ワイド文字)

_tcsrev は _wcsrev に割り当てられます。

_MBCS

マルチバイト文字

_tcsrev は _mbsrev に割り当てられます。

なし (既定値。どちらも_UNICODEも_MBCS定義)

SBCS (ASCII)

_tcsrev は strrev に割り当てられます。

たとえば、TCHAR.H で定義されている汎用テキスト関数 _tcsrev は、プログラムで MBCS が定義されていると mbsrev に割り当てられ、_UNICODE が定義されていると _wcsrev に割り当てられます。 それ以外の場合、_tcsrev は strrev に割り当てられます。

また、TCHAR.H で定義されている汎用テキストの _TCHAR データ型は、_MBCS が定義されていると char 型、_UNICODE が定義されていると wchar_t 型、どちらの定数も定義されていないと char 型に割り当てられます。 プログラミングに便利なように他のデータ型のマッピングも TCHAR.H に用意されていますが、_TCHAR 型が最も多く使用されます。

汎用テキストのデータ型のマップ

汎用テキストのデータ型名

SBCS (_UNICODE も _MBCS も定義されていない場合)

_MBCS が定義されている場合

_UNICODE が定義されている場合

_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 または _TEXT

影響なし (プリプロセッサによって削除される)

影響なし (プリプロセッサによって削除される)

L (後続の文字や文字列を対応する Unicode の文字や文字列に変換する)

ルーチン、変数、およびその他のオブジェクトの汎用テキスト マップの完全な一覧は、「汎用テキスト マップ」を参照してください。

MBCS、Unicode、および SBCS の各モデルに割り当てるために _TCHAR および _tcsrev を使用するコード例を次に示します。

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

MBCS が定義されている場合、プリプロセッサは上記のコードを次のコードに割り当てます。

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

_UNICODE が定義されている場合、プリプロセッサは同じコードを次のコードに割り当てます。

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

_MBCS と _UNICODE のどちらも定義されていない場合、プリプロセッサは上記のコードを次のように 1 バイトの ASCII コードに割り当てます。

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

このように、ソース コードを 1 ファイルだけ記述、保守、およびコンパイルすると、3 種類の文字セットそれぞれに固有なルーチンを実行できます。

← Microsoft 固有の仕様

参照

参照

汎用テキスト マップ

データ型のマップ

定数とグローバル変数のマップ

ルーチンのマップ

汎用テキストのプログラム例