Что означает "Т" в строке. Например, _T ( "Hello" ). Я видел это в проектах, где требуется поддержка Unicode. Что это на самом деле говорит процессору
Что означает _T в CString
Ответ 1
_T
означает "текст". Он превратит ваш литерал в литерал широкого символа Юникода, если и только если вы компилируете свои источники с поддержкой Unicode. См. http://msdn.microsoft.com/en-us/library/c426s321.aspx.
Ответ 2
Из MSDN:
Используйте макрос
_T
для генерации буквенных строк в целом, поэтому они компилируются как строки Unicode под Unicode или как строки ANSI (включая MBCS) без Unicode
Ответ 3
Он фактически используется для проектов, в которых требуется поддержка ANSI Unicode и. Он сообщает компилятору компилировать строковый литерал как Unicode или ANSI в зависимости от значения определения прекомпилятора.
Почему вы хотели бы сделать это, другое дело. Если вы хотите поддерживать Unicode самостоятельно, просто напишите Unicode, в данном случае L"Hello"
. Макрос _T()
был добавлен, когда вам нужно было поддерживать Windows NT и более поздние версии (которые поддерживают Unicode) и Windows 9x/ME (а это не так). В наши дни любой код с использованием этих макросов устарел, поскольку все современные версии Windows основаны на Unicode.
Ответ 4
Это означает ТЕКСТ. Вы можете посмотреть определение при использовании инструментов IDE:
#define _TEXT(x) __T(x)
Но я бы хотел запомнить его как "Transformable" или "swi-T-ch":
L"Hello" //change "Hello" string into UNICODE mode, in any case;
_T("Hello") //if defined UNICODE, change "Hello" into UNICODE; otherwise, keep it in ANSI.