次の方法で共有


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

Microsoft 固有の仕様

さまざまな国際市場に対応したコード開発を容易にするために、Microsoft ランタイム ライブラリには、多くのデータ型やルーチン、オブジェクトなどで利用できる Microsoft 固有の "汎用テキスト" マップが用意されています。 これらのマッピングは、 TCHAR.Hで定義されます。 これらの名前のマップを使用して、#define ステートメントを使用して定義するマニフェスト定数に応じて ASCII (SBCS)、MBCS、Unicode という 3 種類の文字セットのいずれかにコンパイルされるジェネリック コードを書き込むことができます。 汎用テキスト マッピングは、ANSI 互換ではない Microsoft 拡張機能です。

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

#define コンパイル後の状態
_UNICODE Unicode (ワイド文字) _tcsrev_wcsrev にマップされます。
_MBCS マルチバイト文字 _tcsrev_mbsrev にマップされます。
なし (既定値: _UNICODE_MBCS の両方が定義されていません) SBCS (ASCII) _tcsrevstrrev にマップされます。

たとえば、TCHAR.Hで定義されている汎用テキスト関数_tcsrevは、_MBCSがプログラムで定義されている場合は_mbsrevにマップされ、_UNICODEが定義されている場合は_wcsrevにマップされます。 それ以外の場合、_tcsrevstrrev にマップされます。

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 の文字または文字列に変換する)

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

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);

これらのマクロを使用すると、3 種類の文字セットすべてに固有のルーチンを使用して、1 つのソース コード ファイルを記述、保守、コンパイルできます。

Microsoft 固有の仕様はここまで

関連項目

汎用テキスト マッピング
データ型のマッピング
定数とグローバル変数のマッピング
ルーチンのマップ
汎用テキスト プログラムのサンプル