Невозможно преобразовать из "unsigned short [9]" в "char []"
Я работаю над очень старым проектом 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 ответ
_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
,