_T和_L

来源:互联网 发布:淘宝开店起名字 编辑:程序博客网 时间:2024/04/25 19:35
 _T("")是一个宏,定义于tchar.h下。[1]

  #define __T(x) L ## x

  #define _T(x) __T(x)

  他的作用是让你的程序支持Unicode编码

  因为Windows使用两种字符集ANSI(American National Standards Institute 美国国家标准学会)和UNICODE,

  前者就是通常使用的单字节方式,

  但这种方式处理象中文这样的双字节字符不方便,

  容易出现半个汉字的情况。

  而后者是双字节方式,方便处理双字节字符。

  Windows NT的所有与字符有关的函数都提供两种方式的版本,而Windows 9x只支持ANSI方式。

  如果你编译一个程序为ANSI方式,

  _T实际不起任何作用。

  而如果编译一个程序为UNICODE方式,则编译器会把"Hello"字符串以UNICODE方式保存_T和_L的区别在于,_L不管你是以什么方式编译,一律以UNICODE方式保存。

  LPSTR:32bit指针指向一个字符串,每个字符占1字节

  LPCSTR:32-bit指针指向一个常字符串,每个字符占1字节

  LPCTSTR:32-bit指针指向一个常字符串,每字符可能占1字节或2字节,取决于Unicode是否定义

  LPTSTR:32-bit指针每字符可能占1字节或2字节,取决于Unicode是否定义

  L是表示字符串资源为Unicode的。

  比如

  wchar_t Str[] = L"Hello World!";

这个就是双子节存储字符了。