如果定义了__UNICODE标识符,那么一个称作__T的宏就定义如下:
# define __T(x) L##x
这是相当晦涩的语法,但却属于C预处理的ANSI C标准.这一对##称为"粘贴符号",它将字母L添加到宏参数上.因此,如果宏参数是"Hello!",则L##x就是L"Hello!".
如果没有定义_UNICODE标识符,则__T宏只简单地定义如下:
#define __T(x)x
此外,还有两个宏与__T定义相同:
#define _T(x) __T(x)
#define _TEXT(x) __T(x)为了程序对ASCII码和UNICODE码兼容而定义的宏
它和程序预编译参数有关为了程序对ASCII码和UNICODE码兼容而定义的宏
#define _T(x) __T(x)
#ifdef _UNICODE
#define __T(x) L ## x
#endif
#ifndef _UNICODE
#define __T(x) x
#endif
---------------------------------------------------------------------------------------------------------------------------------------
#define __T(x) L ## x 其中L相当于编译器的关键字,编译器遇到L就使字符串的每个字母占2个byte,从而符合Unicode的标准。