Я нахожусь в процессе изучения C ++ и наткнулся на статью о MSDN здесь:
http://msdn.microsoft.com/en-us/magazine/dd861344.aspx
В первом примере кода одна строка кода, к которой относится мой вопрос, выглядит следующим образом:
VERIFY(SetWindowText(L"Direct2D Sample"));
Более конкретно, этот префикс L. Я немного прочитал и поправил меня, если я ошибаюсь :-), но это делается для того, чтобы учесть строки в юникоде, то есть подготовиться к длинному набору символов. Сейчас, когда я читал об этом, я наткнулся на другую статью о методах Adavnced String в C здесь http://www.flipcode.com/archives/Advanced_String_Techniques_in_C-Part_I_Unicode.shtml
Там написано, что есть несколько вариантов, включая включение заголовка:
#define UNICODE
ИЛИ
#define _UNICODE
в C, еще раз укажите, если я ошибаюсь, оцените ваши отзывы. Кроме того, он показывает тип данных, подходящий для этих строк Unicode:
wchar_t
Он добавляет в смесь макрос и тип гибридного типа данных, причем макрос:
_TEXT(t)
, который просто добавляет строку с префиксом L и гибридным типом данных как
TCHAR
То, на что он указывает, позволит использовать юникод, если заголовок есть, и ASCII, если нет. Теперь мой вопрос или, скорее, предположение, которое я хотел бы подтвердить, будет ли Microsoft использовать этот тип данных TCHAR, который является более гибким, или есть ли какое-то преимущество в использовании wchar_t.
Кроме того, когда я говорю, что Microsoft использует это, в частности, для примера в библиотеках ATL и WTL, есть ли у кого-нибудь из вас предпочтение или совет по этому поводу?
Приветствия
Andrew