Существуют следующие способы инициализации нулевого значения.Как инициализировать массив TCHAR?
TCHAR x[5] = {'\0'};
TCHAR x[5] = _T("\0");
Я хочу знать, что является правильным?
Существуют следующие способы инициализации нулевого значения.Как инициализировать массив TCHAR?
TCHAR x[5] = {'\0'};
TCHAR x[5] = _T("\0");
Я хочу знать, что является правильным?
Использовать бывший. _T(...)
будет генерировать строку emtpty char
или wchar
в соответствии с настройками проекта. Последний пример (без _T(...)
потерпит неудачу компиляции, если установлен многобайтовый [а] используется ..
Одно из возможных определений _T
является:
#if defined(_UNICODE)
# define _T(x) L ##x
#else
# define _T(x) x
#endif
Цитируя this comment завершить этот ответ:
, если вы не нацелены на Windows 95, лучшим решением является не
TCHAR
. Выберитеchar
илиwchar_t
в зависимости от того, что вы собираетесь хранить
После того, как вопрос меняются, следующие мои комментарии:
TCHAR x[5] = _T("\0");
) удобно инициализировать из строки и предоставлять нулевое завершение. Но в этом случае оба эквивалентны.char
до wchar_t
.Таким образом, оба объявления эквивалентны, выберите тот, который вы считаете более читаемым.
[а] Для MSVC: Настройки проекта> Свойства конфигурации> Значения по умолчанию Project> Набор символов
Hi Mohit, была некоторая ошибка. Я изменил его. pl посмотреть – user966379
@ user966379 Обновлен мой ответ. Избегайте изменения вопроса, поскольку он может сделать все доступные ответы недействительными. –
вы понимаете, что '_T' делает, хотя? –
'C' и' C++ 'отличаются. Пожалуйста, отметьте свой вопрос только одним из них. –
, если вы не нацелены на Windows 95, лучшим решением является не использовать 'TCHAR' вообще. Выберите 'char' или' wchar_t' в зависимости от того, что вы собираетесь хранить. –