невозможно преобразовать из «unsigned short [9]» в «char []» - PullRequest
0 голосов
/ 14 мая 2018

Я работаю над очень старым проектом C ++. При построении моего кода C ++ в Visual Studio 6 я получаю ошибку "не удается преобразовать из" unsigned short [9] "в" char [] '".

для кода ниже:

char    variable[] = _T("something");

Я погуглил и попытался понять проблему. Это может быть способ, которым я строю это.

Я уже пробовал шаг, написанный в https://mihai -nita.net / 2006/07/23 / visual-studio-unicode-projects / (добавление UNICODE & _UNICODE в препроцессор). Было бы очень полезно, если бы кто-то мог предложить решение, чтобы исправить эту ошибку.

1 Ответ

0 голосов
/ 15 мая 2018

Макрос _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.

...