Подтвердить что ты не робот

Что означает _T в CString

Что означает "Т" в строке. Например, _T ( "Hello" ). Я видел это в проектах, где требуется поддержка Unicode. Что это на самом деле говорит процессору

4b9b3361

Ответ 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.