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 |
例如,在程序中定义的TCHAR.H泛型文本函数_tcsrev映射到_mbsrev是否已_MBCS在程序中定义,或者_wcsrev_UNICODE是否已定义。 否则,_tcsrev 将映射到 strrev。
泛型文本数据类型_TCHAR(在定义时_MBCS也定义TCHAR.H)wchar_t映射到类型char(如果_UNICODE已定义)和类型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 专用