_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 一律的

 _T在VS2008中是什么意思 如下面三语句:

  TCHAR szStr1[] = TEXT("str1");

  char szStr2[] = "str2";

  WCHAR szStr3[] = L("str3");

  那么第一句话正在界说了UNICODE时会疏解为第三句话,没有界说时就等于第二句话。

  但二句话无论是否认义了UNICODE都是天生一个ANSI字符串,而第三句话老是天生UNICODE字符串。

  为了秩序的可移植性,提倡都用第一种吐露门径。

  但正在某些境况下,某个字符必需为ANSI或UNICODE,那就用后两种门径。


_T在VS2008中是什么意思