Макрос _T
расширяется до узкого или широкого строкового литерала в зависимости от состояния макроса UNICODE
.Если UNICODE
не определено, _T
расширится до строки char
, а если UNICODE
определено, _T
расширится до широкой строки символа.
Если вы используете _T
, вы должны использовать тип TCHAR
, который аналогичным образом расширится до char
или wchar_t
в зависимости от состояния макросов UNICODE
:
TCHAR variable[] = _T("something");
Это расширится до
char variable[] = "something";
, если UNICODE
не определено, и будет расширяться до чего-то вроде
wchar_t variable[] = L"something";
, если определено UNICODE
.
Стоит отметить, что wchar_t
не был реальным типом в ранних версиях Visual C ++, а скорее просто typedef
для (или расширение макроса до) unsigned short
, поэтому сообщение об ошибке, которое вы видите, ссылается на wchar_t
.