_T的含义

_T的含义

#include "stdafx.h"
#include <iostream>
using namespace std;

#if 0

_T的作用

_T是一个宏,作用是让你的程序支持Unicode编码。
因为Windows使用两种字符集ANSI和UNICODE,
前者就是通常使用的单字节方式,
但这种方式处理像中文这样的双字节字符不方便,
容易出现半个汉字的情况。
而后者是双字节方式,方便处理双字节字符。

_T("")是一个宏,定义于tchar.h下。[1]
#define __T(x) L ## x
#define _T(x) __T(x)

如果你编译一个程序为ANSI方式,_T实际不起任何作用。
而如果编译一个程序为UNICODE方式,则编译器会把"Hello"字符串
以UNICODE方式保存。_T和_L的区别在于,_L不管你是以什么方式编译,一律以UNICODE方式保存
L是表示字符串资源为Unicode的。
比如
wchar_tStr[] = L"Hello World!";
这个就是双字节存储字符了

_T是一个适配的宏
当#ifdef _UNICODE的时候,_T就是L
没有#ifdef _UNICODE的时候,_T就是ANSI的。
比如:
LPTSTR lpStr = new TCHAR[32];
TCHAR* szBuf = _T("Hello");
以上两句使得无论是在UNICODE编译条件下还是在ANSI编译条件下都是正确编译的。

尽量使用这种表示中间类型的语法,它可以根据需要适应不同的类型,而不需要再次修改如_tcslen

#endif 

猜你喜欢

转载自blog.csdn.net/SwordArcher/article/details/81391098
T