使用一般文本映射

Microsoft 专用

为了简化各种国际市场的代码开发,Microsoft 运行时库为许多数据类型、例程和其他对象提供了 Microsoft 专用的“一般文本”映射。 这些映射在 TCHAR.H 中进行定义。 可以使用这些名称映射来编写可编译全部三种字符集(ASCII (SBCS)、MBCS 或 Unicode)的通用代码:具体取决于使用 #define 语句定义的清单常量。 一般文本映射是与 ANSI 不兼容的 Microsoft 扩展。

用于一般文本映射的预处理器指令

#define 编译的版本 示例
_UNICODE Unicode(宽字符) _tcsrev 映射到 _wcsrev
_MBCS 多字节字符 _tcsrev 映射到 _mbsrev
无(默认值:_UNICODE_MBCS 均未定义) SBCS (ASCII) _tcsrev 映射到 strrev

例如,如果已在程序中定义了 MBCS,则在 TCHAR.H 中定义的一般文本函数 _tcsrev 映射到 mbsrev,如果已定义了 _UNICODE,则将映射到 _wcsrev。 否则,_tcsrev 将映射到 strrev

如果已定义了 _MBCS,则仍在 TCHAR.H 中定义的一般文本数据类型 _TCHAR 将映射到类型 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 均未定义,则预处理器将片段映射到单字节 ASCII 代码,如下所示:

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

通过这些宏,可以使用特定于所有三种字符集的例程来编写、维护和编译单个源代码文件。

结束 Microsoft 专用

另请参阅

一般文本映射
数据类型映射
常数和全局变量映射
例程映射
示例一般文本程序