_T在VS2008中是什么意思
- 编辑:大众自然网 -_T在VS2008中是什么意思
睁开全文
正在VC6内里,有些函数的参数可能直接用字符串,然而换到VS2008中就会提示“cannot convert parameter 1 from const char [10] to LPCTSTR”,然后此时正在字符串前后加个_T()就好了,为啥子呢?
一、 正在字符串前加一个L效力:
如 L"我的字符串" 吐露将ANSI字符串转换成unicode的字符串,便是每个字符占用两个字节。
strlen("asd") = 3;
strlen(L"asd") = 6;
二、 _T宏可能把一个引号惹起来的字符串,遵照你的处境树立,使得编译器会遵照编译方针处境采取适当的(Unicode照样ANSI)字符照料办法
即使你界说了UNICODE,那么_T宏会把字符串前面加一个L。这时 _T("ABCD") 相当于 L"ABCD" ,这是宽字符串。
即使没有界说,那么_T宏不会正在字符串前面加谁人L,_T("ABCD") 就等价于 "ABCD"
三、TEXT,_TEXT 和_T 一律的
如下面三语句:
TCHAR szStr1[] = TEXT("str1");
char szStr2[] = "str2";
WCHAR szStr3[] = L("str3");
那么第一句话正在界说了UNICODE时会疏解为第三句话,没有界说时就等于第二句话。
但二句话无论是否认义了UNICODE都是天生一个ANSI字符串,而第三句话老是天生UNICODE字符串。
为了秩序的可移植性,提倡都用第一种吐露门径。
但正在某些境况下,某个字符必需为ANSI或UNICODE,那就用后两种门径。
_T在VS2008中是什么意思