ANSI和Unicode中的_T ,TCHAR,LPTSTR,LPCTSTR的具体区别与实例解析
阳光岛主
博客专家认证 2009-12-17 07:28:35 我想知道ANSI和Unicode中的_T ,TCHAR,LPTSTR,LPCTSTR的具体区别与实例解析?谢谢
以下是我刚学到了,但仍然不太明白_T是宏,主要是如何定义的,如何使用?
宏_T与TCHAR有什么具体的、实际的区别?
微软提供了一些兼容的通用数据类型,我们最常用的数据类型有_T ,TCHAR,LPTSTR,LPCTSTR。
顺便说一下,LPCTSTR和const TCHAR*是完全等同的。其中L表示long指针,这是为了兼容Windows 3.1等16位操作系统遗留下来的,在Win32 中以及其它的32位操作系统中,long指针和near指针及far修饰符都是为了兼容的作用,没有实际意义。P(pointer)表示这是一个指针;C(const)表示是一个常量;T(_T宏)表示兼容ANSI和Unicode,STR(string)表示这个变量是一个字符串。综上可以看出,LPCTSTR表示一个指向常固定地址的可以根据一些宏定义改变语义的字符串。比如:
TCHAR* szText=_T(“Hello!”);
TCHAR szText[]=_T(“I Love You”);
LPCTSTR lpszText=_T(“大家好!”);